Boost logo

Boost-Commit :

From: john_at_[hidden]
Date: 2007-10-08 12:49:48


Author: johnmaddock
Date: 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
New Revision: 39791
URL: http://svn.boost.org/trac/boost/changeset/39791

Log:
Moved docs into a sub-directory in preparation for move to mainline SVN.
Added:
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/Jamfile.v2
      - copied, changed from r39778, /sandbox/math_toolkit/libs/math/doc/Jamfile.v2
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/background.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/background.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/bessel_ik.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/bessel_ik.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/bessel_introduction.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/bessel_introduction.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/bessel_jy.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/bessel_jy.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/bessel_spherical.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/bessel_spherical.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/beta.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/beta.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/beta_derivative.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/beta_derivative.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/common_overviews.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/common_overviews.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/compilers.qbk
      - copied, changed from r39778, /sandbox/math_toolkit/libs/math/doc/compilers.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/concepts.qbk
      - copied, changed from r39778, /sandbox/math_toolkit/libs/math/doc/concepts.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/contact_info.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/contact_info.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/credits.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/credits.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/digamma.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/digamma.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/dist_algorithms.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/dist_algorithms.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/dist_reference.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/dist_reference.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/dist_tutorial.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/dist_tutorial.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/
      - copied from r39778, /sandbox/math_toolkit/libs/math/doc/distributions/
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/bernoulli.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/bernoulli.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/beta.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/beta.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/binomial.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/binomial.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/binomial_example.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/binomial_example.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/cauchy.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/cauchy.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/chi_squared.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/chi_squared.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/chi_squared_examples.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/chi_squared_examples.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/distribution_construction.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/distribution_construction.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/error_handling_example.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/error_handling_example.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/exponential.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/exponential.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/extreme_value.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/extreme_value.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/f_dist_example.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/f_dist_example.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/find_location_and_scale.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/find_location_and_scale.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/fisher.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/fisher.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/gamma.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/gamma.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/lognormal.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/lognormal.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/nag_library.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/nag_library.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/negative_binomial.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/negative_binomial.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/negative_binomial_example.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/negative_binomial_example.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/non_members.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/non_members.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/normal.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/normal.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/normal_example.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/normal_example.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/pareto.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/pareto.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/poisson.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/poisson.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/rayleigh.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/rayleigh.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/students_t.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/students_t.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/students_t_examples.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/students_t_examples.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/triangular.qbk
      - copied, changed from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/triangular.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/uniform.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/uniform.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/weibull.qbk
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/weibull.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/ellint_carlson.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/ellint_carlson.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/ellint_introduction.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/ellint_introduction.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/ellint_legendre.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/ellint_legendre.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/
      - copied from r39778, /sandbox/math_toolkit/libs/math/doc/equations/
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel1.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel1.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel10.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel10.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel10.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel10.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel10.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel10.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel10.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel10.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel11.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel11.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel11.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel11.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel11.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel11.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel11.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel11.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel12.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel12.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel12.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel12.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel12.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel12.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel12.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel12.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel13.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel13.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel13.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel13.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel13.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel13.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel13.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel13.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel14.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel14.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel14.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel14.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel14.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel14.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel14.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel14.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel15.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel15.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel15.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel15.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel15.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel15.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel15.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel15.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel16.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel16.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel16.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel16.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel16.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel16.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel16.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel16.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel2.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel2.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel3.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel3.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel4.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel4.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel5.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel5.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel6.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel6.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel7.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel7.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel8.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel8.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel8.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel8.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel8.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel8.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel8.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel8.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel9.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel9.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel9.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel9.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel9.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel9.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/bessel9.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/bessel9.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta8.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta8.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta8.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta8.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta8.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta8.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta_dist_kurtosis.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta_dist_kurtosis.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta_dist_kurtosis.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta_dist_kurtosis.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/beta_dist_kurtosis.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/beta_dist_kurtosis.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/binomial_ref1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/binomial_ref1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/binomial_ref1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/binomial_ref1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/binomial_ref1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/binomial_ref1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/binomial_ref2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/binomial_ref2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/binomial_ref2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/binomial_ref2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/binomial_ref2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/binomial_ref2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/cauchy_ref1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/cauchy_ref1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/cauchy_ref1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/cauchy_ref1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/cauchy_ref1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/cauchy_ref1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chf.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chf.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chf.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chf.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_ref1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_ref1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_ref1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_ref1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_ref1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_ref1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_squ_tut3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_squ_tut3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/chi_square_tut.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/chi_square_tut.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/derivative1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/derivative1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/derivative1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/derivative1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/derivative1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/derivative1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/derivative2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/derivative2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/derivative2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/derivative2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/derivative2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/derivative2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/derivatives.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/derivatives.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/digamma3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/digamma3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_reference.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_reference.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/dist_tutorial4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/dist_tutorial4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint1.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint1.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint10.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint10.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint10.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint10.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint10.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint10.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint10.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint10.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint11.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint11.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint11.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint11.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint11.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint11.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint11.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint11.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint12.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint12.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint12.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint12.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint12.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint12.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint12.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint12.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint13.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint13.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint13.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint13.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint13.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint13.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint13.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint13.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint14.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint14.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint14.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint14.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint14.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint14.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint14.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint14.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint15.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint15.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint15.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint15.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint15.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint15.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint15.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint15.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint16.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint16.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint16.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint16.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint16.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint16.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint16.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint16.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint17.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint17.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint17.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint17.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint17.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint17.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint18.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint18.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint18.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint18.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint18.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint18.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint19.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint19.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint19.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint19.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint19.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint19.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint2.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint2.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint20.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint20.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint20.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint20.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint20.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint20.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint21.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint21.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint21.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint21.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint21.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint21.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint22.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint22.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint22.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint22.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint22.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint22.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint23.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint23.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint23.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint23.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint23.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint23.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint24.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint24.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint24.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint24.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint24.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint24.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint25.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint25.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint25.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint25.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint25.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint25.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint26.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint26.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint26.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint26.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint26.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint26.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint3.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint3.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint4.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint4.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint5.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint5.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint6.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint6.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint7.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint7.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint8.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint8.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint8.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint8.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint8.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint8.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint8.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint8.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint9.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint9.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint9.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint9.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint9.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint9.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ellint9.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ellint9.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/erf.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/erf.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/erf1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/erf1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/erf1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/erf1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/erf1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/erf1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/erf2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/erf2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/erf2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/erf2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/erf2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/erf2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/error.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/error.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/error1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/error1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/error1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/error1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/error1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/error1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/error2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/error2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/error2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/error2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/error2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/error2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/exponential_dist_ref1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/exponential_dist_ref1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/exponential_dist_ref1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/exponential_dist_ref1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/exponential_dist_ref1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/exponential_dist_ref1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fisher_pdf.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fisher_pdf.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fisher_pdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fisher_pdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fisher_pdf.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fisher_pdf.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/fraction4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/fraction4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamm5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamm5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_dist_ref1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_dist_ref1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_dist_ref1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_dist_ref1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_dist_ref1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_dist_ref1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_dist_ref2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_dist_ref2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_dist_ref2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_dist_ref2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_dist_ref2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_dist_ref2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_ratio.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_ratio.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_ratio0.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_ratio0.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_ratio0.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_ratio0.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_ratio0.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_ratio0.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_ratio1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_ratio1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_ratio1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_ratio1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/gamma_ratio1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/gamma_ratio1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hazard.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hazard.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hazard.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hazard.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hazard.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hazard.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hermite.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hermite.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hermite_0.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hermite_0.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hermite_0.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hermite_0.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hermite_0.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hermite_0.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hermite_1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hermite_1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hermite_1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hermite_1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hermite_1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hermite_1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hypot.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hypot.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hypot.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hypot.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hypot.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hypot.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hypot2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hypot2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hypot2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hypot2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/hypot2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/hypot2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta10.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta10.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta10.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta10.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta10.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta10.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta11.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta11.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta11.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta11.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta11.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta11.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta12.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta12.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta12.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta12.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta12.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta12.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta8.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta8.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta8.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta8.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta8.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta8.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta9.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta9.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta9.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta9.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv8.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv8.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv8.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv8.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/ibeta_inv8.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/ibeta_inv8.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma10.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma10.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma10.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma10.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma10.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma10.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma11.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma11.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma11.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma11.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma11.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma11.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma11b.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma11b.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma11b.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma11b.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma11b.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma11b.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma12.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma12.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma12.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma12.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma12.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma12.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma13.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma13.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma13.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma13.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma13.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma13.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma16.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma16.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma16.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma16.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma16.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma16.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma17.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma17.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma17.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma17.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma17.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma17.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma18.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma18.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma18.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma18.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma18.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma18.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma19.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma19.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma19.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma19.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma19.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma19.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma1f.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma1f.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma1f.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma1f.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma1f.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma1f.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma2f.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma2f.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma2f.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma2f.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma2f.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma2f.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma8.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma8.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma8.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma8.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma8.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma8.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma9.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma9.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma9.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma9.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/igamma9.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/igamma9.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_0.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_0.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_0.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_0.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_0.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_0.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/laguerre_3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/laguerre_3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0a.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0a.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0a.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0a.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0a.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0a.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0b.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0b.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0b.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0b.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos0b.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos0b.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lanczos7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lanczos7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_0.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_0.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_0.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_0.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_0.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_0.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/legendre_5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/legendre_5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamm6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamm6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lgamma.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lgamma.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/log1pseries.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/log1pseries.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/log1pseries.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/log1pseries.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/log1pseries.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/log1pseries.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lognormal_ref.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lognormal_ref.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lognormal_ref.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lognormal_ref.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/lognormal_ref.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/lognormal_ref.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel1.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel1.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel10.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel10.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel10.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel10.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel10.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel10.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel10.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel10.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel11.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel11.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel11.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel11.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel11.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel11.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel11.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel11.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel12.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel12.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel12.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel12.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel12.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel12.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel12.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel12.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel13.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel13.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel13.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel13.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel13.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel13.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel13.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel13.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel14.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel14.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel14.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel14.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel14.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel14.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel14.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel14.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel15.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel15.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel15.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel15.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel15.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel15.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel15.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel15.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel16.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel16.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel16.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel16.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel16.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel16.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel16.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel16.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel2.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel2.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel3.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel3.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel4.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel4.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel5.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel5.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel6.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel6.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel7.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel7.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel8.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel8.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel8.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel8.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel8.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel8.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel8.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel8.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel9.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel9.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel9.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel9.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel9.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel9.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/mbessel9.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/mbessel9.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/misc.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/misc.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/neg_binomial_ref.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/neg_binomial_ref.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/neg_binomial_ref.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/neg_binomial_ref.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/neg_binomial_ref.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/neg_binomial_ref.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/normal_ref1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/normal_ref1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/normal_ref1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/normal_ref1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/normal_ref1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/normal_ref1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/poisson_ref1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/poisson_ref1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/poisson_ref1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/poisson_ref1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/poisson_ref1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/poisson_ref1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/roots4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/roots4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel1.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel1.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel2.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel2.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel3.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel3.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel3.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel3.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel3.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel3.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel4.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel4.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel4.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel4.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel4.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel4.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/sbessel5.tex (props changed)
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/sbessel5.tex
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb1.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb1.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb15.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb15.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb15.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb15.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb15.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb15.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb15.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb15.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb17.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb17.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb17.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb17.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb17.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb17.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb17.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb17.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb18.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb18.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb18.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb18.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb18.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb18.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb18.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb18.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb20.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb20.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb20.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb20.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb20.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb20.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb20.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb20.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb22.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb22.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb22.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb22.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb22.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb22.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb22.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb22.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb5.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb5.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb5.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb5.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb5.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb5.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb6.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb6.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb6.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb6.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb6.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb6.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb6.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb6.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb7.jpeg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb7.jpeg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb7.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb7.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb7.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb7.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/special_functions_blurb7.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/special_functions_blurb7.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_0.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_0.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_0.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_0.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_0.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_0.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_2.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_2.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/spherical_2.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/spherical_2.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/students_t_dist.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/students_t_dist.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/students_t_dist.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/students_t_dist.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/students_t_dist.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/students_t_dist.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/students_t_ref1.mml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/students_t_ref1.mml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/students_t_ref1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/students_t_ref1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/students_t_ref1.svg
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/students_t_ref1.svg
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/equations/tools.xml
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/equations/tools.xml
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/erf.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/erf.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/erf_inv.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/erf_inv.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/error.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/error.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/error_handling.qbk
      - copied, changed from r39778, /sandbox/math_toolkit/libs/math/doc/error_handling.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/factorials.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/factorials.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/fpclassify.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/fpclassify.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/fraction.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/fraction.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/gamma_derivatives.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/gamma_derivatives.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/gamma_ratios.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/gamma_ratios.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/
      - copied from r39778, /sandbox/math_toolkit/libs/math/doc/graphs/
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bernoulli_cdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bernoulli_cdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bernoulli_cdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bernoulli_cdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bernoulli_cdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bernoulli_cdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bernoulli_pdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bernoulli_pdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bernoulli_pdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bernoulli_pdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bernoulli_pdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bernoulli_pdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_i.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_i.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_i.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_i.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_i.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_i.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_jn.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_jn.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_jn.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_jn.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_jn.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_jn.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_jv.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_jv.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_jv.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_jv.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_jv.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_jv.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_k.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_k.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_k.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_k.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_k.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_k.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_yv.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_yv.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_yv.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_yv.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/bessel_yv.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/bessel_yv.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/beta-small.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/beta-small.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/beta-small.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/beta-small.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/beta.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/beta.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/beta.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/beta.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/beta_dist.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/beta_dist.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/beta_dist.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/beta_dist.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/beta_dist.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/beta_dist.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/beta_pdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/beta_pdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_pdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_pdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_pdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_pdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_pdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_pdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_pdf_1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_pdf_1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_pdf_2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_pdf_2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_pdf_2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_pdf_2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_pdf_2.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_pdf_2.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_pdf_3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_pdf_3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_quantile.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_quantile.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_quantile_1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_quantile_1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_quantile_1.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_quantile_1.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/binomial_quantile_2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/binomial_quantile_2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/cauchy1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/cauchy1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/cauchy1.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/cauchy1.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/cauchy1.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/cauchy1.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/cauchy2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/cauchy2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/cauchy2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/cauchy2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/cauchy2.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/cauchy2.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/cdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/cdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/cdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/cdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/chi_square.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/chi_square.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/chi_square.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/chi_square.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/chi_square.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/chi_square.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/digamma.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/digamma.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/digamma.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/digamma.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/digamma.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/digamma.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/discrete_graphs.xlr
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/discrete_graphs.xlr
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_1.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_1.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_1.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_1.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_2.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_2.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_3.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_3.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_3.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_3.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ellint_c.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ellint_c.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erf1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erf1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erf2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erf2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erf_inv.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erf_inv.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erf_inv.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erf_inv.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erf_inv.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erf_inv.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erfc.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erfc.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erfc_inv.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erfc_inv.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erfc_inv.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erfc_inv.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/erfc_inv.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/erfc_inv.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/exp_on_r.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/exp_on_r.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/exponential_dist.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/exponential_dist.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/exponential_dist.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/exponential_dist.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/exponential_dist.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/exponential_dist.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/extreme_val_dist.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/extreme_val_dist.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/extreme_val_dist.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/extreme_val_dist.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/extreme_val_dist.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/extreme_val_dist.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/extreme_val_dist2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/extreme_val_dist2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/extreme_val_dist2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/extreme_val_dist2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/extreme_val_dist2.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/extreme_val_dist2.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/fisher_f.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/fisher_f.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/fisher_f.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/fisher_f.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/fisher_f.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/fisher_f.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_dist1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_dist1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_dist1.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_dist1.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_dist1.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_dist1.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_dist2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_dist2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_dist2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_dist2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_dist2.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_dist2.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_p.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_p.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_p.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_p.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_q.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_q.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/gamma_q.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/gamma_q.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/hermite.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/hermite.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/hermite.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/hermite.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/hermite.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/hermite.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/hyperbolic.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/hyperbolic.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ibeta.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ibeta.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ibeta.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ibeta.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/ibeta.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/ibeta.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/im_exp_on_c.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/im_exp_on_c.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/laguerre.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/laguerre.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/laguerre.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/laguerre.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/laguerre.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/laguerre.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/legendre_p1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/legendre_p1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/legendre_p1.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/legendre_p1.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/legendre_p1.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/legendre_p1.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/legendre_q.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/legendre_q.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/legendre_q.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/legendre_q.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/legendre_q.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/legendre_q.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lgamma-errors.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lgamma-errors.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lgamma-errors.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lgamma-errors.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lgamma.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lgamma.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lgamma.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lgamma.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lognormal1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lognormal1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lognormal1.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lognormal1.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lognormal1.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lognormal1.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lognormal2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lognormal2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lognormal2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lognormal2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/lognormal2.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/lognormal2.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/neg_binomial_pdf1.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/neg_binomial_pdf1.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/neg_binomial_pdf2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/neg_binomial_pdf2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/normal.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/normal.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/normal.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/normal.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/normal.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/normal.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/pdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/pdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/pdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/pdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/poisson.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/poisson.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/quantile.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/quantile.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/quantile.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/quantile.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/quantile.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/quantile.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/rayleigh_cdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/rayleigh_cdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/rayleigh_cdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/rayleigh_cdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/rayleigh_cdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/rayleigh_cdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/rayleigh_pdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/rayleigh_pdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/rayleigh_pdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/rayleigh_pdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/rayleigh_pdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/rayleigh_pdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/re_exp_on_c.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/re_exp_on_c.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-2.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-2.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-3.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-3.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-3.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-3.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-3.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-3.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-4.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-4.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-4.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-4.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-4.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-4.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-5.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-5.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-5.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-5.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/remez-5.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/remez-5.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/sinc_pi_and_sinhc_pi_on_r.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/sinc_pi_and_sinhc_pi_on_r.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/sph_bessel_j.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/sph_bessel_j.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/sph_bessel_j.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/sph_bessel_j.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/sph_bessel_j.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/sph_bessel_j.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/sph_bessel_y.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/sph_bessel_y.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/sph_bessel_y.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/sph_bessel_y.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/sph_bessel_y.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/sph_bessel_y.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/students_t.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/students_t.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/students_t.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/students_t.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/students_t.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/students_t.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/survival.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/survival.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/survival.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/survival.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/survival_inv.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/survival_inv.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/survival_inv.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/survival_inv.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/survival_inv.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/survival_inv.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/triangular_cdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/triangular_cdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/triangular_cdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/triangular_cdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/triangular_cdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/triangular_cdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/triangular_pdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/triangular_pdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/triangular_pdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/triangular_pdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/triangular_pdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/triangular_pdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/trigonometric.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/trigonometric.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/uniform_cdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/uniform_cdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/uniform_cdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/uniform_cdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/uniform_cdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/uniform_cdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/uniform_pdf.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/uniform_pdf.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/uniform_pdf.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/uniform_pdf.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/uniform_pdf.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/uniform_pdf.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/weibull.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/weibull.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/weibull.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/weibull.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/weibull.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/weibull.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/weibull2.png
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/weibull2.png
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/weibull2.ps
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/weibull2.ps
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/graphs/weibull2.rgd
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/graphs/weibull2.rgd
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/hermite.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/hermite.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/html/
      - copied from r39778, /sandbox/math_toolkit/libs/math/doc/html/
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/html/boostbook.css
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/html/boostbook.css
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/html/images/
      - copied from r39787, /sandbox/math_toolkit/libs/math/doc/html/images/
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/html/reference.css
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/html/reference.css
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/html4_symbols.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/html4_symbols.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/ibeta.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/ibeta.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/ibeta_inv.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/ibeta_inv.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/igamma.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/igamma.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/igamma_inv.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/igamma_inv.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/implementation.qbk
      - copied, changed from r39778, /sandbox/math_toolkit/libs/math/doc/implementation.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/internals_overview.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/internals_overview.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/inv_hyper.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/inv_hyper.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/issues.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/issues.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/laguerre.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/laguerre.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/lanczos.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/lanczos.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/latin1_symbols.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/latin1_symbols.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/legendre.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/legendre.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/lgamma.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/lgamma.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/license.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/license.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/math.qbk
      - copied, changed from r39778, /sandbox/math_toolkit/libs/math/doc/math.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/minima.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/minima.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/minimax.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/minimax.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/overview.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/overview.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/pdf/
      - copied from r39778, /sandbox/math_toolkit/libs/math/doc/pdf/
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/pdf/math.pdf
      - copied unchanged from r39787, /sandbox/math_toolkit/libs/math/doc/pdf/math.pdf
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/performance.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/performance.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/poisson_optimisation.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/poisson_optimisation.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/policy.qbk
      - copied, changed from r39778, /sandbox/math_toolkit/libs/math/doc/policy.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/policy_tutorial.qbk
      - copied, changed from r39778, /sandbox/math_toolkit/libs/math/doc/policy_tutorial.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/polynomial.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/polynomial.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/powers.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/powers.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/rational.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/rational.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/references.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/references.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/relative_error.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/relative_error.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/remez.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/remez.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/result_type_calc.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/result_type_calc.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/roadmap.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/roadmap.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/roots.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/roots.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/roots_without_derivatives.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/roots_without_derivatives.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/series.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/series.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/sinc.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/sinc.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/spherical_harmonic.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/spherical_harmonic.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/structure.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/structure.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/test_data.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/test_data.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/test_html4_symbols.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/test_html4_symbols.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/tgamma.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/tgamma.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/thread_safety.qbk
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/thread_safety.qbk
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/win32_nmake.mak
      - copied unchanged from r39778, /sandbox/math_toolkit/libs/math/doc/win32_nmake.mak
Removed:
   sandbox/math_toolkit/libs/math/doc/Jamfile.v2
   sandbox/math_toolkit/libs/math/doc/background.qbk
   sandbox/math_toolkit/libs/math/doc/bessel_ik.qbk
   sandbox/math_toolkit/libs/math/doc/bessel_introduction.qbk
   sandbox/math_toolkit/libs/math/doc/bessel_jy.qbk
   sandbox/math_toolkit/libs/math/doc/bessel_spherical.qbk
   sandbox/math_toolkit/libs/math/doc/beta.qbk
   sandbox/math_toolkit/libs/math/doc/beta_derivative.qbk
   sandbox/math_toolkit/libs/math/doc/common_overviews.qbk
   sandbox/math_toolkit/libs/math/doc/compilers.qbk
   sandbox/math_toolkit/libs/math/doc/concepts.qbk
   sandbox/math_toolkit/libs/math/doc/contact_info.qbk
   sandbox/math_toolkit/libs/math/doc/credits.qbk
   sandbox/math_toolkit/libs/math/doc/digamma.qbk
   sandbox/math_toolkit/libs/math/doc/dist_algorithms.qbk
   sandbox/math_toolkit/libs/math/doc/dist_reference.qbk
   sandbox/math_toolkit/libs/math/doc/dist_tutorial.qbk
   sandbox/math_toolkit/libs/math/doc/distributions/
   sandbox/math_toolkit/libs/math/doc/ellint_carlson.qbk
   sandbox/math_toolkit/libs/math/doc/ellint_introduction.qbk
   sandbox/math_toolkit/libs/math/doc/ellint_legendre.qbk
   sandbox/math_toolkit/libs/math/doc/equations/
   sandbox/math_toolkit/libs/math/doc/erf.qbk
   sandbox/math_toolkit/libs/math/doc/erf_inv.qbk
   sandbox/math_toolkit/libs/math/doc/error.qbk
   sandbox/math_toolkit/libs/math/doc/error_handling.qbk
   sandbox/math_toolkit/libs/math/doc/factorials.qbk
   sandbox/math_toolkit/libs/math/doc/fpclassify.qbk
   sandbox/math_toolkit/libs/math/doc/fraction.qbk
   sandbox/math_toolkit/libs/math/doc/gamma_derivatives.qbk
   sandbox/math_toolkit/libs/math/doc/gamma_ratios.qbk
   sandbox/math_toolkit/libs/math/doc/graphs/
   sandbox/math_toolkit/libs/math/doc/hermite.qbk
   sandbox/math_toolkit/libs/math/doc/html/
   sandbox/math_toolkit/libs/math/doc/html4_symbols.qbk
   sandbox/math_toolkit/libs/math/doc/ibeta.qbk
   sandbox/math_toolkit/libs/math/doc/ibeta_inv.qbk
   sandbox/math_toolkit/libs/math/doc/igamma.qbk
   sandbox/math_toolkit/libs/math/doc/igamma_inv.qbk
   sandbox/math_toolkit/libs/math/doc/implementation.qbk
   sandbox/math_toolkit/libs/math/doc/internals_overview.qbk
   sandbox/math_toolkit/libs/math/doc/inv_hyper.qbk
   sandbox/math_toolkit/libs/math/doc/issues.qbk
   sandbox/math_toolkit/libs/math/doc/laguerre.qbk
   sandbox/math_toolkit/libs/math/doc/lanczos.qbk
   sandbox/math_toolkit/libs/math/doc/latin1_symbols.qbk
   sandbox/math_toolkit/libs/math/doc/legendre.qbk
   sandbox/math_toolkit/libs/math/doc/lgamma.qbk
   sandbox/math_toolkit/libs/math/doc/license.qbk
   sandbox/math_toolkit/libs/math/doc/math.qbk
   sandbox/math_toolkit/libs/math/doc/minima.qbk
   sandbox/math_toolkit/libs/math/doc/minimax.qbk
   sandbox/math_toolkit/libs/math/doc/overview.qbk
   sandbox/math_toolkit/libs/math/doc/pdf/
   sandbox/math_toolkit/libs/math/doc/performance.qbk
   sandbox/math_toolkit/libs/math/doc/poisson_optimisation.qbk
   sandbox/math_toolkit/libs/math/doc/policy.qbk
   sandbox/math_toolkit/libs/math/doc/policy_tutorial.qbk
   sandbox/math_toolkit/libs/math/doc/polynomial.qbk
   sandbox/math_toolkit/libs/math/doc/powers.qbk
   sandbox/math_toolkit/libs/math/doc/rational.qbk
   sandbox/math_toolkit/libs/math/doc/references.qbk
   sandbox/math_toolkit/libs/math/doc/relative_error.qbk
   sandbox/math_toolkit/libs/math/doc/remez.qbk
   sandbox/math_toolkit/libs/math/doc/result_type_calc.qbk
   sandbox/math_toolkit/libs/math/doc/roadmap.qbk
   sandbox/math_toolkit/libs/math/doc/roots.qbk
   sandbox/math_toolkit/libs/math/doc/roots_without_derivatives.qbk
   sandbox/math_toolkit/libs/math/doc/series.qbk
   sandbox/math_toolkit/libs/math/doc/sinc.qbk
   sandbox/math_toolkit/libs/math/doc/spherical_harmonic.qbk
   sandbox/math_toolkit/libs/math/doc/structure.qbk
   sandbox/math_toolkit/libs/math/doc/test_data.qbk
   sandbox/math_toolkit/libs/math/doc/test_html4_symbols.qbk
   sandbox/math_toolkit/libs/math/doc/tgamma.qbk
   sandbox/math_toolkit/libs/math/doc/thread_safety.qbk
   sandbox/math_toolkit/libs/math/doc/win32_nmake.mak
Text files modified:
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/Jamfile.v2 | 16 +++++++---------
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/compilers.qbk | 4 ++--
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/concepts.qbk | 18 +++++++++---------
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/binomial_example.qbk | 12 ++++++------
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/chi_squared_examples.qbk | 6 +++---
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/distribution_construction.qbk | 4 ++--
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/error_handling_example.qbk | 2 +-
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/find_location_and_scale.qbk | 12 ++++++------
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/nag_library.qbk | 2 +-
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/negative_binomial_example.qbk | 14 +++++++-------
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/normal_example.qbk | 4 ++--
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/students_t_examples.qbk | 8 ++++----
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/triangular.qbk | 6 +++---
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/error_handling.qbk | 2 +-
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/implementation.qbk | 2 +-
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/math.qbk | 2 +-
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/policy.qbk | 28 ++++++++++++++--------------
   sandbox/math_toolkit/libs/math/doc/sf_and_dist/policy_tutorial.qbk | 22 +++++++++++-----------
   18 files changed, 81 insertions(+), 83 deletions(-)

Deleted: sandbox/math_toolkit/libs/math/doc/Jamfile.v2
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/Jamfile.v2 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,72 +0,0 @@
-
-# Copyright John Maddock 2005. Use, modification, and distribution are
-# subject to the Boost Software License, Version 1.0. (See accompanying
-# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-using quickbook ;
-
-path-constant images_location : html ;
-
-xml math : math.qbk ;
-boostbook standalone
- :
- math
- :
- # Path for links to Boost:
- <xsl:param>boost.root=$(boost-root)
- # Path for libraries index:
- <xsl:param>boost.libraries=$(boost-root)/libs/libraries.htm
- # Use the main Boost stylesheet:
- <xsl:param>html.stylesheet=../../../../../../trunk/doc/html/boostbook.css
-
- # Some general style settings:
- <xsl:param>table.footnote.number.format=1
- <xsl:param>footnote.number.format=1
-
- # HTML options first:
- # Use graphics not text for navigation:
- <xsl:param>navig.graphics=1
- # How far down we chunk nested sections, basically all of them:
- <xsl:param>chunk.section.depth=10
- # Don't put the first section on the same page as the TOC:
- <xsl:param>chunk.first.sections=1
- # How far down sections get TOC's
- <xsl:param>toc.section.depth=10
- # Max depth in each TOC:
- <xsl:param>toc.max.depth=4
- # How far down we go with TOC's
- <xsl:param>generate.section.toc.level=10
- #<xsl:param>root.filename="sf_dist_and_tools"
-
- # PDF Options:
- # TOC Generation: this is needed for FOP-0.9 and later:
- # <xsl:param>fop1.extensions=1
- <xsl:param>xep.extensions=1
- # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
- <xsl:param>fop.extensions=0
- # No indent on body text:
- <xsl:param>body.start.indent=0pt
- # Margin size:
- <xsl:param>page.margin.inner=0.5in
- # Margin size:
- <xsl:param>page.margin.outer=0.5in
- # Paper type = A4
- <xsl:param>paper.type=A4
- # Yes, we want graphics for admonishments:
- <xsl:param>admon.graphics=1
- # Hyphenation:
- <xsl:param>hyphenate.verbatim=1
- <xsl:param>hyphenate.verbatim.characters=" :."
- # Set this one for PDF generation *only*:
- # default pnd graphics are awful in PDF form,
- # better use SVG's instead:
- <format>pdf:<xsl:param>admon.graphics.extension=".svg"
- <format>pdf:<xsl:param>use.role.for.mediaobject=1
- <format>pdf:<xsl:param>preferred.mediaobject.role=print
- <format>pdf:<xsl:param>img.src.path=$(images_location)/
- <format>pdf:<xsl:param>admon.graphics.path=$(images_location)/images/
- ;
-
-
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/background.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/background.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,79 +0,0 @@
-[section:variates Random Variates and Distribution Parameters]
-
-[@http://en.wikipedia.org/wiki/Random_variate Random variates]
-and [@http://en.wikipedia.org/wiki/Parameter distribution parameters]
-are conventionally distinguished (for example in Wikipedia and Wolfram MathWorld
-by placing a semi-colon after the random variate (whose value you 'choose'),
-to separate the variate from the parameter(s) that defines the shape of the distribution.
-
-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 /k/: the number of successes observed.
-This means the probability density\/mass function (pdf) is written as ['f(k; n, p)].
-
-Translating this into code the `binomial_distribution` constructor
-therefore has two parameters:
-
- binomial_distribution(RealType n, RealType p);
-
-While the function `pdf` has one argument specifying the distribution type
-(which includes it's parameters, if any),
-and a second argument for the random variate. So taking our binomial distribution
-example, we would write:
-
- pdf(binomial_distribution<RealType>(n, p), k);
-
-[endsect]
-
-[section:dist_params Discrete Probability Distributions]
-
-Note that the [@http://en.wikipedia.org/wiki/Discrete_probability_distribution
-discrete distributions], including the binomial, negative binomial, Poisson & Bernoulli,
-are all mathematically defined as discrete functions:
-only integral values of the random variate 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.
-
-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.
-
-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.
-
-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.
-
-[caution
-The quantile function of a discrete distribution will by
-default return an integer result that has been
-/rounded outwards/. 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 /at least/ the requested
-coverage will be present in the central region, and /no more than/
-the requested coverage will be present in the tails.
-
-This behaviour can be changed so that the quantile functions are rounded
-differently, or even return a real-valued result using
-[link math_toolkit.policy.pol_overview Policies]. It is strongly
-recommended that you read the tutorial
-[link math_toolkit.policy.pol_tutorial.understand_dis_quant
-Understanding Quantiles of Discrete Distributions] before
-using the quantile function on a discrete distribution. The
-[link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs]
-describe how to change the rounding policy
-for these distributions.
-]
-
-[endsect]
-
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/bessel_ik.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/bessel_ik.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,191 +0,0 @@
-
-[section:mbessel Modified Bessel Functions of the First and Second Kinds]
-
-[h4 Synopsis]
-
- template <class T1, class T2>
- ``__sf_result`` cyl_bessel_i(T1 v, T2 x);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` cyl_bessel_i(T1 v, T2 x, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` cyl_bessel_k(T1 v, T2 x);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` cyl_bessel_k(T1 v, T2 x, const ``__Policy``&);
-
-
-[h4 Description]
-
-The functions __cyl_bessel_i and __cyl_bessel_k return the result of the
-modified Bessel functions of the first and second kind respectively:
-
-cyl_bessel_i(v, x) = I[sub v](x)
-
-cyl_bessel_k(v, x) = K[sub v](x)
-
-where:
-
-[equation mbessel2]
-
-[equation mbessel3]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types. The functions are also optimised for the
-relatively common case that T1 is an integer.
-
-[optional_policy]
-
-The functions return the result of __domain_error whenever the result is
-undefined or complex. For __cyl_bessel_j this occurs when `x < 0` and v is not
-an integer, or when `x == 0` and `v != 0`. For __cyl_neumann this occurs
-when `x <= 0`.
-
-The following graph illustrates the exponential behaviour of I[sub v].
-
-[$../graphs/bessel_i.png]
-
-The following graph illustrates the exponential decay of K[sub v].
-
-[$../graphs/bessel_k.png]
-
-[h4 Testing]
-
-There are two sets of test values: spot values calculated using
-[@http://functions.wolfram.com 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).
-
-[h4 Accuracy]
-
-The following tables show how the accuracy of these functions
-varies on various platforms, along with a comparison to the __gsl library.
-Note that only results for the widest floating-point type on the
-system are given, as narrower types have __zero_error. All values
-are relative errors in units of epsilon.
-
-[table Errors Rates in cyl_bessel_i
-[[Significand Size] [Platform and Compiler] [I[sub v]] ]
-[[53] [Win32 / Visual C++ 8.0] [Peak=10 Mean=3.4
- GSL Peak=6000] ]
-[[64] [Red Hat Linux IA64 / G++ 3.4] [Peak=11 Mean=3] ]
-[[64] [SUSE Linux AMD64 / G++ 4.1] [Peak=11 Mean=4] ]
-[[113] [HP-UX / HP aCC 6] [Peak=15 Mean=4] ]
-]
-
-[table Errors Rates in cyl_bessel_k
-[[Significand Size] [Platform and Compiler] [K[sub v]] ]
-[[53] [Win32 / Visual C++ 8.0] [Peak=9 Mean=2
-
-GSL Peak=9] ]
-[[64] [Red Hat Linux IA64 / G++ 3.4] [Peak=10 Mean=2] ]
-[[64] [SUSE Linux AMD64 / G++ 4.1] [Peak=10 Mean=2] ]
-[[113] [HP-UX / HP aCC 6] [Peak=12 Mean=5] ]
-]
-
-[h4 Implementation]
-
-The following are handled as special cases first:
-
-When computing I[sub v][space] for ['x < 0], then [nu][space] must be an integer
-or a domain error occurs. If [nu][space] is an integer, then the function is
-odd if [nu][space] is odd and even if [nu][space] is even, and we can reflect to
-['x > 0].
-
-For I[sub v][space] with v equal to 0, 1 or 0.5 are handled as special cases.
-
-The 0 and 1 cases use minimax rational approximations on
-finite and infinite intervals. The coefficients are from:
-
-* J.M. Blair and C.A. Edwards, ['Stable rational minimax approximations
- to the modified Bessel functions I_0(x) and I_1(x)], Atomic Energy of Canada
- Limited Report 4928, Chalk River, 1974.
-* S. Moshier, ['Methods and Programs for Mathematical Functions],
- Ellis Horwood Ltd, Chichester, 1989.
-
-While the 0.5 case is a simple trigonometric function:
-
-I[sub 0.5](x) = sqrt(2 / [pi]x) * sinh(x)
-
-For K[sub v][space] with /v/ an integer, the result is calculated using the
-recurrence relation:
-
-[equation mbessel5]
-
-starting from K[sub 0][space] and K[sub 1][space] 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.
-
-In the general case, we first normalize [nu][space] to \[[^0, [inf]])
-with the help of the reflection formulae:
-
-[equation mbessel9]
-
-[equation mbessel10]
-
-Let [mu][space] = [nu] - floor([nu] + 1/2), then [mu][space] is the fractional part of
-[nu][space] such that |[mu]| <= 1/2 (we need this for convergence later). The idea is to
-calculate K[sub [mu]](x) and K[sub [mu]+1](x), and use them to obtain
-I[sub [nu]](x) and K[sub [nu]](x).
-
-The algorithm is proposed by Temme in
-N.M. Temme, ['On the numerical evaluation of the modified bessel function
- of the third kind], Journal of Computational Physics, vol 19, 324 (1975),
-which needs two continued fractions as well as the Wronskian:
-
-[equation mbessel11]
-
-[equation mbessel12]
-
-[equation mbessel8]
-
-The continued fractions are computed using the modified Lentz's method
-(W.J. Lentz, ['Generating Bessel functions in Mie scattering calculations
- using continued fractions], Applied Optics, vol 15, 668 (1976)).
-Their convergence rates depend on ['x], therefore we need
-different strategies for large ['x] and small ['x].
-
-['x > v], CF1 needs O(['x]) iterations to converge, CF2 converges rapidly.
-
-['x <= v], CF1 converges rapidly, CF2 fails to converge when ['x] [^->] 0.
-
-When ['x] is large (['x] > 2), both continued fractions converge (CF1
-may be slow for really large ['x]). K[sub [mu]][space] and K[sub [mu]+1][space]
-can be calculated by
-
-[equation mbessel13]
-
-where
-
-[equation mbessel14]
-
-['S] is also a series that is summed along with CF2, see
-I.J. Thompson and A.R. Barnett, ['Modified Bessel functions I_v and K_v
- of real order and complex argument to selected accuracy], Computer Physics
- Communications, vol 47, 245 (1987).
-
-When ['x] is small (['x] <= 2), CF2 convergence may fail (but CF1
-works very well). The solution here is Temme's series:
-
-[equation mbessel15]
-
-where
-
-[equation mbessel16]
-
-f[sub k][space] and h[sub k][space]
-are also computed by recursions (involving gamma functions), but the
-formulas are a little complicated, readers are referred to
-N.M. Temme, ['On the numerical evaluation of the modified Bessel function
- of the third kind], Journal of Computational Physics, vol 19, 324 (1975).
-Note: Temme's series converge only for |[mu]| <= 1/2.
-
-K[sub [nu]](x) is then calculated from the forward
-recurrence, as is K[sub [nu]+1](x). With these two values and
-f[sub [nu]], the Wronskian yields I[sub [nu]](x) directly.
-
-[endsect]
-

Deleted: sandbox/math_toolkit/libs/math/doc/bessel_introduction.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/bessel_introduction.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,118 +0,0 @@
-
-[section:bessel_over Bessel Function Overview]
-
-[h4 Ordinary Bessel Functions]
-
-Bessel Functions are solutions to Bessel's ordinary differential
-equation:
-
-[equation bessel1]
-
-where [nu][space] is the /order/ of the equation, and may be an arbitrary
-real or complex number, although integer orders are the most common occurrence.
-
-This library supports either integer or real orders.
-
-Since this is a second order differential equation, there must be two
-linearly independent solutions, the first of these is denoted J[sub v][space]
-and known as a Bessel function of the first kind:
-
-[equation bessel2]
-
-This function is implemented in this library as __cyl_bessel_j.
-
-The second solution is denoted either Y[sub v][space] or N[sub v][space]
-and is known as either a Bessel Function of the second kind, or as a
-Neumann function:
-
-[equation bessel3]
-
-This function is implemented in this library as __cyl_neumann.
-
-The Bessel functions satisfy the recurrence relations:
-
-[equation bessel4]
-
-[equation bessel5]
-
-Have the derivatives:
-
-[equation bessel6]
-
-[equation bessel7]
-
-Have the Wronskian relation:
-
-[equation bessel8]
-
-and the reflection formulae:
-
-[equation bessel9]
-
-[equation bessel10]
-
-
-[h4 Modified Bessel Functions]
-
-The Bessel functions are valid for complex argument /x/, and an important
-special case is the situation where /x/ is purely imaginary: giving a real
-valued result. In this case the functions are the two linearly
-independent solutions to the modified Bessel equation:
-
-[equation mbessel1]
-
-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][space] and K[sub v][space]
-respectively:
-
-[equation mbessel2]
-
-[equation mbessel3]
-
-These functions are implemented in this library as __cyl_bessel_i and
-__cyl_bessel_k respectively.
-
-The modified Bessel functions satisfy the recurrence relations:
-
-[equation mbessel4]
-
-[equation mbessel5]
-
-Have the derivatives:
-
-[equation mbessel6]
-
-[equation mbessel7]
-
-Have the Wronskian relation:
-
-[equation mbessel8]
-
-and the reflection formulae:
-
-[equation mbessel9]
-
-[equation mbessel10]
-
-[h4 Spherical Bessel Functions]
-
-When solving the Helmholtz equation in spherical coordinates by
-separation of variables, the radial equation has the form:
-
-[equation sbessel1]
-
-The two linearly independent solutions to this equation are called the
-spherical Bessel functions j[sub n][space] and y[sub n][space], and are related to the
-ordinary Bessel functions J[sub n][space] and Y[sub n][space] by:
-
-[equation sbessel2]
-
-The spherical Bessel function of the second kind y[sub n][space]
-is also known as the spherical Neumann function n[sub n].
-
-These functions are implemented in this library as __sph_bessel and
-__sph_neumann.
-
-[endsect]
-

Deleted: sandbox/math_toolkit/libs/math/doc/bessel_jy.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/bessel_jy.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,255 +0,0 @@
-
-[section:bessel Bessel Functions of the First and Second Kinds]
-
-[h4 Synopsis]
-
- template <class T1, class T2>
- ``__sf_result`` cyl_bessel_j(T1 v, T2 x);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` cyl_bessel_j(T1 v, T2 x, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` cyl_neumann(T1 v, T2 x);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` cyl_neumann(T1 v, T2 x, const ``__Policy``&);
-
-
-[h4 Description]
-
-The functions __cyl_bessel_j and __cyl_neumann return the result of the
-Bessel functions of the first and second kinds respectively:
-
-cyl_bessel_j(v, x) = J[sub v](x)
-
-cyl_neumann(v, x) = Y[sub v](x) = N[sub v](x)
-
-where:
-
-[equation bessel2]
-
-[equation bessel3]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types. The functions are also optimised for the
-relatively common case that T1 is an integer.
-
-[optional_policy]
-
-The functions return the result of __domain_error whenever the result is
-undefined or complex. For __cyl_bessel_j this occurs when `x < 0` and v is not
-an integer, or when `x == 0` and `v != 0`. For __cyl_neumann this occurs
-when `x <= 0`.
-
-The following graph illustrates the cyclic nature of J[sub v]:
-
-[$../graphs/bessel_jn.png]
-
-The following graph shows the behaviour of Y[sub v]: this is also
-cyclic for large /x/, but tends to -[infin][space] for small /x/:
-
-[$../graphs/bessel_yv.png]
-
-[h4 Testing]
-
-There are two sets of test values: spot values calculated using
-[@http//:functions.wolfram.com 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).
-
-[h4 Accuracy]
-
-The following tables show how the accuracy of these functions
-varies on various platforms, along with comparisons to the __gsl 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 /relative/
-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 __zero_error. All values
-are relative errors in units of epsilon.
-
-[table Errors Rates in cyl_bessel_j
-[[Significand Size] [Platform and Compiler] [J[sub 0][space] and J[sub 1]] [J[sub v]] [J[sub v][space] (large values of x > 1000)] ]
-[[53] [Win32 / Visual C++ 8.0]
- [Peak=2.5 Mean=1.1
-
-GSL Peak=6.6
-
-__cephes Peak=2.5 Mean=1.1]
- [Peak=11 Mean=2.2
-
-GSL Peak=11
-
-__cephes Peak=17 Mean=2.5]
- [Peak=413 Mean=110
-
-GSL Peak=6x10[super 11]
-
-__cephes Peak=2x10[super 5] ] ]
-[[64] [Red Hat Linux IA64 / G++ 3.4] [Peak=7 Mean=3] [Peak=117 Mean=10] [Peak=2x10[super 4][space] Mean=6x10[super 3]] ]
-[[64] [SUSE Linux AMD64 / G++ 4.1] [Peak=7 Mean=3] [Peak=400 Mean=40] [Peak=2x10[super 4][space] Mean=1x10[super 4]] ]
-[[113] [HP-UX / HP aCC 6] [Peak=14 Mean=6] [Peak=29 Mean=3] [Peak=2700 Mean=450] ]
-]
-
-[table Errors Rates in cyl_neumann
-[[Significand Size] [Platform and Compiler] [J[sub 0][space] and J[sub 1]] [J[sub n] (integer orders)] [J[sub v] (fractional orders)] ]
-[[53] [Win32 / Visual C++ 8.0]
- [Peak=330 Mean=54
-
-GSL Peak=34 Mean=9
-
-__cephes Peak=330 Mean=54]
- [Peak=923 Mean=83
-
-GSL Peak=500 Mean=54
-
-__cephes Peak=923 Mean=83]
- [Peak=561 Mean=36
-
-GSL Peak=1.4x10[super 6][space] Mean\=7x10[super 4][space]
-
-__cephes Peak=+INF]]
-[[64] [Red Hat Linux IA64 / G++ 3.4] [Peak=470 Mean=56] [Peak=843 Mean=51] [Peak=741 Mean=51] ]
-[[64] [SUSE Linux AMD64 / G++ 4.1] [Peak=1300 Mean=424] [Peak=2x10[super 4][space] Mean=8x10[super 3]] [Peak=1x10[super 5][space] Mean=6x10[super 3]] ]
-[[113] [HP-UX / HP aCC 6] [Peak=180 Mean=63] [Peak=340 Mean=150] [Peak=2x10[super 4][space] Mean=1200] ]
-]
-
-Note that for large /x/ these functions are largely dependent on
-the accuracy of the `std::sin` and `std::cos` functions.
-
-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]. Note that
-by way of double-checking these results, the worst performing __cephes and GSL cases
-were recomputed using [@http//:functions.wolfram.com functions.wolfram.com],
-and the result checked against our test data: no errors in the test data were found.
-
-[h4 Implementation]
-
-The implementation is mostly about filtering off various special cases:
-
-When /x/ is negative, then the order /v/ 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 /x > 0/.
-
-When the order /v/ is negative then the reflection formulae can be used to
-move to /v > 0/:
-
-[equation bessel9]
-
-[equation bessel10]
-
-Note that if the order is an integer, then these formulae reduce to:
-
-J[sub -n] = (-1)[super n]J[sub n]
-
-Y[sub -n] = (-1)[super n]Y[sub n]
-
-However, in general, a negative order implies that we will need to compute
-both J and Y.
-
-When /x/ is large compared to the order /v/ then the asymptotic expansions
-for large /x/ in M. Abramowitz and I.A. Stegun,
-['Handbook of Mathematical Functions] 9.2.19 are used
-(these were found to be more reliable
-than those in A&S 9.2.5).
-
-When the order /v/ is an integer the method first relates the result
-to J[sub 0], J[sub 1], Y[sub 0][space] and Y[sub 1][space] using either
-forwards or backwards recurrence (Miller's algorithm) depending upon which is stable.
-The values for J[sub 0], J[sub 1], Y[sub 0][space] and Y[sub 1][space] are
-calculated using the rational minimax approximations on
-root-bracketing intervals for small ['|x|] and Hankel asymptotic
-expansion for large ['|x|]. The coefficients are from:
-
-W.J. Cody, ['ALGORITHM 715: SPECFUN - A Portable FORTRAN Package of
-Special Function Routines and Test Drivers], ACM Transactions on Mathematical
-Software, vol 19, 22 (1993).
-
-and
-
-J.F. Hart et al, ['Computer Approximations], John Wiley & Sons, New York, 1968.
-
-These approximations are accurate to around 19 decimal digits: therefore
-these methods are not used when type T has more than 64 binary digits.
-
-When /x/ is small, J[sub x][space] is best computed directly from the series:
-
-[equation bessel2]
-
-In the general case we compute J[sub v][space] and
-Y[sub v][space] simultaneously.
-
-To get the initial values, let
-[mu][space] = [nu] - floor([nu] + 1/2), then [mu][space] is the fractional part
-of [nu][space] such that
-|[mu]| <= 1/2 (we need this for convergence later). The idea is to
-calculate J[sub [mu]](x), J[sub [mu]+1](x), Y[sub [mu]](x), Y[sub [mu]+1](x)
-and use them to obtain J[sub [nu]](x), Y[sub [nu]](x).
-
-The algorithm is called Steed's method, which needs two
-continued fractions as well as the Wronskian:
-
-[equation bessel8]
-
-[equation bessel11]
-
-[equation bessel12]
-
-See: F.S. Acton, ['Numerical Methods that Work],
- The Mathematical Association of America, Washington, 1997.
-
-The continued fractions are computed using the modified Lentz's method
-(W.J. Lentz, ['Generating Bessel functions in Mie scattering calculations
-using continued fractions], Applied Optics, vol 15, 668 (1976)).
-Their convergence rates depend on ['x], therefore we need
-different strategies for large ['x] and small ['x].
-
-['x > v], CF1 needs O(['x]) iterations to converge, CF2 converges rapidly
-
-['x <= v], CF1 converges rapidly, CF2 fails to converge when ['x] [^->] 0
-
-When ['x] is large (['x] > 2), both continued fractions converge (CF1
-may be slow for really large ['x]). J[sub [mu]], J[sub [mu]+1],
-Y[sub [mu]], Y[sub [mu]+1] can be calculated by
-
-[equation bessel13]
-
-where
-
-[equation bessel14]
-
-J[sub [nu]] and Y[sub [mu]] are then calculated using backward
-(Miller's algorithm) and forward recurrence respectively.
-
-When ['x] is small (['x] <= 2), CF2 convergence may fail (but CF1
-works very well). The solution here is Temme's series:
-
-[equation bessel15]
-
-where
-
-[equation bessel16]
-
-g[sub k][space] and h[sub k][space]
-are also computed by recursions (involving gamma functions), but the
-formulas are a little complicated, readers are refered to
-N.M. Temme, ['On the numerical evaluation of the ordinary Bessel function
-of the second kind], Journal of Computational Physics, vol 21, 343 (1976).
-Note Temme's series converge only for |[mu]| <= 1/2.
-
-As the previous case, Y[sub [nu]][space] is calculated from the forward
-recurrence, so is Y[sub [nu]+1]. With these two
-values and f[sub [nu]], the Wronskian yields J[sub [nu]](x) directly
-without backward recurrence.
-
-[endsect]
-

Deleted: sandbox/math_toolkit/libs/math/doc/bessel_spherical.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/bessel_spherical.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,81 +0,0 @@
-
-[section:sph_bessel Spherical Bessel Functions of the First and Second Kinds]
-
-[h4 Synopsis]
-
- template <class T1, class T2>
- ``__sf_result`` sph_bessel(unsigned v, T2 x);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` sph_bessel(unsigned v, T2 x, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` sph_neumann(unsigned v, T2 x);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` sph_neumann(unsigned v, T2 x, const ``__Policy``&);
-
-[h4 Description]
-
-The functions __sph_bessel and __sph_neumann return the result of the
-Spherical Bessel functions of the first and second kinds respectively:
-
-sph_bessel(v, x) = j[sub v](x)
-
-sph_neumann(v, x) = y[sub v](x) = n[sub v](x)
-
-where:
-
-[equation sbessel2]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-for the single argument type T.
-
-[optional_policy]
-
-The functions return the result of __domain_error whenever the result is
-undefined or complex: this occurs when `x < 0`.
-
-The j[sub v][space] function is cyclic like J[sub v][space] but differs
-in its behaviour at the origin:
-
-[$../graphs/sph_bessel_j.png]
-
-Likewise y[sub v][space] is also cyclic for large x, but tends to -[infin][space]
-for small /x/:
-
-[$../graphs/sph_bessel_y.png]
-
-[h4 Testing]
-
-There are two sets of test values: spot values calculated using
-[@http://functions.wolfram.com/ 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).
-
-[h4 Accuracy]
-
-Other than for some special cases, these functions are computed in terms of
-__cyl_bessel_j and __cyl_neumann: refer to these functions for accuracy data.
-
-[h4 Implementation]
-
-Other than error handling and a couple of special cases these functions
-are implemented directly in terms of their definitions:
-
-[equation sbessel2]
-
-The special cases occur for:
-
-j[sub 0][space]= __sinc_pi(x) = sin(x) / x
-
-and for small ['x < 1], we can use the series:
-
-[equation sbessel5]
-
-which neatly avoids the problem of calculating 0/0 that can occur with the
-main definition as x [rarr] 0.
-
-[endsect]
-

Deleted: sandbox/math_toolkit/libs/math/doc/beta.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/beta.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,128 +0,0 @@
-[section:beta_function Beta]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/beta.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2>
- ``__sf_result`` beta(T1 a, T2 b);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` beta(T1 a, T2 b, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-The beta function is defined by:
-
-[equation beta1]
-
-[$../graphs/beta.png]
-
-[optional_policy]
-
-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 __lanczos. In practice any built-in
-floating-point type you will encounter has an appropriate __lanczos
-defined for it. It is also possible, given enough machine time, to generate
-further __lanczos's using the program libs/math/tools/lanczos_generator.cpp.
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types.
-
-[h4 Accuracy]
-
-The following table shows peak errors for various domains of input arguments,
-along with comparisons to the __gsl and __cephes libraries. Note that
-only results for the widest floating point type on the system are given as
-narrower types have __zero_error.
-
-[table Peak Errors In the Beta Function
-[[Significand Size] [Platform and Compiler] [Errors in range
-
-0.4 < a,b < 100] [Errors in range
-
-1e-6 < a,b < 36]]
-[[53] [Win32, Visual C++ 8] [Peak=99 Mean=22
-
-(GSL Peak=1178 Mean=238)
-
-(__cephes=1612)] [Peak=10.7 Mean=2.6
-
-(GSL Peak=12 Mean=2.0)
-
-(__cephes=174)]]
-[[64] [Red Hat Linux IA32, g++ 3.4.4] [Peak=112.1 Mean=26.9] [Peak=15.8 Mean=3.6]]
-[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=61.4 Mean=19.5] [Peak=12.2 Mean=3.6]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=42.03 Mean=13.94] [Peak=9.8 Mean=3.1]]
-]
-
-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.
-
-[h4 Testing]
-
-A mixture of spot tests of exact values, and randomly generated test data are
-used: the test data was computed using
-[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision.
-
-[h4 Implementation]
-
-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 __lanczos, then we can combine the power terms:
-
-[equation beta2]
-
-which is almost the ideal solution, however almost all of the error occurs
-in evaluating the power terms when /a/ or /b/ are large. If we assume that /a > b/
-then the larger of the two power terms can be reduced by a factor of /b/, which
-immediately cuts the maximum error in half:
-
-[equation beta3]
-
-This may not be the final solution, but it is very competitive compared to
-other implementation methods.
-
-The generic implementation - where no __lanczos 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:
-
-[equation beta8]
-
-where la, lb and lc are the integration limits used for a, b, and a+b.
-
-There are a few special cases worth mentioning:
-
-When /a/ or /b/ are less than one, we can use the recurrence relations:
-
-[equation beta4]
-
-[equation beta5]
-
-to move to a more favorable region where they are both greater than 1.
-
-In addition:
-
-[equation beta7]
-
-[endsect][/section:beta_function The Beta Function]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/beta_derivative.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/beta_derivative.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,50 +0,0 @@
-[section:beta_derivative Derivative of the Incomplete Beta Function]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/beta.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta_derivative(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta_derivative(T1 a, T2 b, T3 x, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-This function finds some uses in statistical distributions: it
-computes the partial derivative with respect to /x/ of the incomplete
-beta function __ibeta.
-
-[equation derivative2]
-
-The return type of this function is computed using the __arg_pomotion_rules
-when T1, T2 and T3 are different types.
-
-[optional_policy]
-
-[h4 Accuracy]
-
-Almost identical to the incomplete beta function __ibeta.
-
-[h4 Implementation]
-
-This function just expose some of the internals of the incomplete
-beta function __ibeta: refer to the documentation for that function
-for more information.
-
-[endsect][/section Derivatives of the Incomplete Beta and Gamma Functions]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/common_overviews.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/common_overviews.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,91 +0,0 @@
-
-
-[template policy_overview[]
-
-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 [link math_toolkit.policy.pol_tutorial policy tutorial]
-and the [link math_toolkit.policy.pol_ref policy reference].
-
-Generally speaking unless you find that the
-[link math_toolkit.policy.pol_tutorial.policy_tut_defaults
- default policy behaviour]
-when encountering 'bad' argument values does not meet your needs,
-you should not need to worry about policies.
-
-Policies are a compile-time mechanism that allow you to change
-error-handling or calculation precision either
-program wide, or at the call site.
-
-Although the policy mechanism itself is rather complicated,
-in practice it is easy to use, and very flexible.
-
-Using policies you can control:
-
-* [link math_toolkit.policy.pol_ref.error_handling_policies How results from 'bad' arguments are handled],
- including those that cannot be fully evaluated.
-* How [link math_toolkit.policy.pol_ref.internal_promotion accuracy is controlled by internal promotion] to use more precise types.
-* What working [link math_toolkit.policy.pol_ref.precision_pol precision] should be used to calculate results.
-* What to do when a [link math_toolkit.policy.pol_ref.assert_undefined mathematically undefined function]
- is used: Should this raise a run-time or compile-time error?
-* Whether [link math_toolkit.policy.pol_ref.discrete_quant_ref discrete functions],
- like the binomial, should return real or only integral values, and how they are rounded.
-* 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
- __evaluation_error.
-
-You can control policies:
-
-* Using [link math_toolkit.policy.pol_ref.policy_defaults macros] to
-change any default policy: the is the prefered method for installation
-wide policies.
-* At your chosen [link math_toolkit.policy.pol_ref.namespace_pol
-namespace scope] for distributions and/or functions: this is the
-prefered method for project, namespace, or translation unit scope
-policies.
-* In an ad-hoc manner [link math_toolkit.policy.pol_tutorial.ad_hoc_sf_policies
-by passing a specific policy to a special function], or to a
-[link math_toolkit.policy.pol_tutorial.ad_hoc_dist_policies
-statistical distribution].
-
-]
-
-[template performance_overview[]
-
-By and large the performance of this library should be acceptable
-for most needs. However, you should note that the library's primary
-emphasis is on accuracy and numerical stability, and /not/ speed.
-
-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 FORTAN 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.
-
-The two most important things you can do to ensure the best performance
-from this library are:
-
-# Turn on your compilers optimisations: the difference between "release"
-and "debug" builds can easily be a [link math_toolkit.perf.getting_best factor of 20].
-# Pick your compiler carefully: [link math_toolkit.perf.comp_compilers
-performance differences of up to
-8 fold] have been found between some windows compilers for example.
-
-The [link math_toolkit.perf performance section] 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.
-
-]
-
-[/ math.qbk
- Copyright 2007 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/compilers.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/compilers.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,34 +0,0 @@
-[section:compilers Compilers]
-
-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.
-
-The code has been compiled and tested with:
-[table Compiler Notes
-[[Compiler][Platform][Notes]]
-[[Intel 9.1, 8.1][Win32 and Linux][The tests cases tend to generate a lot of
- warnings relating to numeric underflow of the test data: these are
- harmless. The headers all appear to be warning free.]]
-[[g++ ][Linux and HP-UX][The test suite doesn't compile with -pedantic
- (a problem with system headers included by Boost.Test not compiling
- with that option), otherwise our headers should be warning free.]]
-[[HP aCC][HP-UX][ Unfortunately this emits quite a few warnings from libraries
- upon which we depend (TR1, Array etc).]]
-[[Borland 5.8.2][Windows][Almost works: some effort has been put into porting to this compiler.
- However, during testing a number of instances were encountered where this compiler
- generated incorrect code: completely omitting a function call seemingly at random.
- For this reason, [*we cannot recommend using this library with this compiler], as the
- correct operation of the code cannot be guaranteed.]]
-[[MSVC 8.0][Windows][Warning free at level 4]]
-]
-
-[endsect][/section:compilers Compilers]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/concepts.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/concepts.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,369 +0,0 @@
-[section:use_ntl Using With NTL - a High-Precision Floating-Point Library]
-
-The special functions and tools in this library can be used with
-[@http://shoup.net/ntl/doc/RR.txt NTL::RR (an arbitrary precision number type)],
-via the bindings in [@../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp].
-[@http://shoup.net/ntl/ See also NTL: A Library for doing Number Theory by
-Victor Shoup]
-
-Unfortunately `NTL::RR` doesn't quite satisfy our conceptual requirements,
-so there is a very thin wrapper class `boost::math::ntl::RR` defined in
-[@../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp] that you
-should use in place of `NTL::RR`. 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.
-
-Finally there is a high precision __lanczos suitable for use with `boost::math::ntl::RR`,
-used at 1000-bit precision in
-[@../tools/ntl_rr_lanczos.hpp libs/math/tools/ntl_rr_lanczos.hpp].
-The approximation has a theoretical precision of > 90 decimal digits,
-and an experimental precision of > 100 decimal digits. To use that
-approximation, just include that header before any of the special
-function headers (if you don't use it, you'll get a slower, but
-fully generic implementation for all of the gamma-like functions).
-
-[endsect][/section:use_ntl Using With NTL - a High Precision Floating-Point Library]
-
-[section:concepts Conceptual Requirements for Real Number Types]
-
-The functions, and statistical distributions in this library can be used with
-any type /RealType/ 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. For example,
-with [link math_toolkit.using_udt.use_ntl a thin wrapper class] one of the types
-provided with [@http://shoup.net/ntl/ NTL (RR)] can be used. Submissions
-of binding to other extended precision types would also be most welcome!
-
-The guiding principal behind these requirements, is that a /RealType/
-behaves just like a built in floating point type.
-
-[h4 Basic Arithmetic Requirements]
-
-These requirements are common to all of the functions in this library.
-
-In the following table /r/ is an object of type `RealType`, /cr/ and
-/cr2/ are objects
-of type `const RealType`, and /ca/ is an object of type `const arithmetic-type`
-(arithmetic types include all the built in integers and floating point types).
-
-[table
-[[Expression][Result Type][Notes]]
-[[`RealType(cr)`][RealType]
- [RealType is copy constructible.]]
-[[`RealType(ca)`][RealType]
- [RealType is copy constructible from the arithmetic types.]]
-[[`r = cr`][RealType&][Assignment operator.]]
-[[`r = ca`][RealType&][Assignment operator from the arithmetic types.]]
-[[`r += cr`][RealType&][Adds cr to r.]]
-[[`r += ca`][RealType&][Adds ar to r.]]
-[[`r -= cr`][RealType&][Subtracts cr from r.]]
-[[`r -= ca`][RealType&][Subtracts ca from r.]]
-[[`r *= cr`][RealType&][Multiplies r by cr.]]
-[[`r *= ca`][RealType&][Multiplies r by ca.]]
-[[`r /= cr`][RealType&][Divides r by cr.]]
-[[`r /= ca`][RealType&][Divides r by ca.]]
-[[`-r`][RealType][Unary Negation.]]
-[[`+r`][RealType&][Identity Operation.]]
-[[`cr + cr2`][RealType][Binary Addition]]
-[[`cr + ca`][RealType][Binary Addition]]
-[[`ca + cr`][RealType][Binary Addition]]
-[[`cr - cr2`][RealType][Binary Subtraction]]
-[[`cr - ca`][RealType][Binary Subtraction]]
-[[`ca - cr`][RealType][Binary Subtraction]]
-[[`cr * cr2`][RealType][Binary Multiplication]]
-[[`cr * ca`][RealType][Binary Multiplication]]
-[[`ca * cr`][RealType][Binary Multiplication]]
-[[`cr / cr2`][RealType][Binary Subtraction]]
-[[`cr / ca`][RealType][Binary Subtraction]]
-[[`ca / cr`][RealType][Binary Subtraction]]
-[[`cr == cr2`][bool][Equality Comparison]]
-[[`cr == ca`][bool][Equality Comparison]]
-[[`ca == cr`][bool][Equality Comparison]]
-[[`cr != cr2`][bool][Inequality Comparison]]
-[[`cr != ca`][bool][Inequality Comparison]]
-[[`ca != cr`][bool][Inequality Comparison]]
-[[`cr <= cr2`][bool][Less than equal to.]]
-[[`cr <= ca`][bool][Less than equal to.]]
-[[`ca <= cr`][bool][Less than equal to.]]
-[[`cr >= cr2`][bool][Greater than equal to.]]
-[[`cr >= ca`][bool][Greater than equal to.]]
-[[`ca >= cr`][bool][Greater than equal to.]]
-[[`cr < cr2`][bool][Less than comparison.]]
-[[`cr < ca`][bool][Less than comparison.]]
-[[`ca < cr`][bool][Less than comparison.]]
-[[`cr > cr2`][bool][Greater than comparison.]]
-[[`cr > ca`][bool][Greater than comparison.]]
-[[`ca > cr`][bool][Greater than comparison.]]
-[[`boost::math::tools::digits<RealType>()`][int]
- [The number of digits in the significand of RealType.]]
-[[`boost::math::tools::max_value<RealType>()`][RealType]
- [The largest representable number by type RealType.]]
-[[`boost::math::tools::min_value<RealType>()`][RealType]
- [The smallest representable number by type RealType.]]
-[[`boost::math::tools::log_max_value<RealType>()`][RealType]
- [The natural logarithm of the largest representable number by type RealType.]]
-[[`boost::math::tools::log_min_value<RealType>()`][RealType]
- [The natural logarithm of the smallest representable number by type RealType.]]
-[[`boost::math::tools::epsilon<RealType>()`][RealType]
- [The machine epsilon of RealType.]]
-]
-
-Note that:
-
-# The functions `log_max_value` and `log_min_value` can be
-synthesised from the others, and so no explicit specialisation is required.
-# The function `epsilon` 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/tools/ntl.hpp boost/math/tools/ntl.hpp]
-for an example where the precision does vary at runtime).
-# The functions `digits`, `max_value` and `min_value`, all get synthesised
-automatically from `std::numeric_limits`. However, if `numeric_limits`
-is not specialised for type RealType, then you will get a compiler error
-when code tries to use these functions, /unless/ you explicitly specialise them.
-For example if the precision of RealType varies at runtime, then
-`numeric_limits` support may not be appropriate, see
-[@../../../../boost/math/tools/ntl.hpp boost/math/tools/ntl.hpp] for examples.
-
-[warning
-If `std::numeric_limits<>` is *not specialized*
-for type /RealType/ then the default float precision of 6 decimal digits
-will be used by other Boost programs including:
-
-Boost.Test: giving misleading error messages like
-
-['"difference between {9.79796} and {9.79796} exceeds 5.42101e-19%".]
-
-Boost.LexicalCast and Boost.Serialization when converting the number
-to a string, causing potentially serious loss of accuracy on output.
-
-Although it might seem obvious that RealType should require `std::numeric_limits`
-to be specialized, this is not sensible for
-`NTL::RR` and similar classes where the number of digits is a runtime
-parameter (where as for `numeric_limits` it has to be fixed at compile time).
-]
-
-[h4 Standard Library Support Requirements]
-
-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!
-
-In the following table /r/ is an object of type `RealType`,
-/cr1/ and /cr2/ are objects of type `const RealType`, and
-/i/ is an object of type `int`.
-
-[table
-[[Expression][Result Type]]
-[[`fabs(cr1)`][RealType]]
-[[`abs(cr1)`][RealType]]
-[[`ceil(cr1)`][RealType]]
-[[`floor(cr1)`][RealType]]
-[[`exp(cr1)`][RealType]]
-[[`pow(cr1, cr2)`][RealType]]
-[[`sqrt(cr1)`][RealType]]
-[[`log(cr1)`][RealType]]
-[[`frexp(cr1, &i)`][RealType]]
-[[`ldexp(cr1, i)`][RealType]]
-[[`cos(cr1)`][RealType]]
-[[`sin(cr1)`][RealType]]
-[[`asin(cr1)`][RealType]]
-[[`tan(cr1)`][RealType]]
-[[`atan(cr1)`][RealType]]
-]
-
-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: `acos`, `atan2`, `fmod`, `cosh`, `sinh`, `tanh`, `modf` and `log10`
-are not currently used, but may be if further special functions are added.
-
-In addition, for efficient and accurate results, a __lanczos is highly desirable.
-You may be able to adapt an existing approximation from
-[@../../../../boost/math/special_functions/lanczos.hpp
-boost/math/special_functions/lanczos.hpp] or
-[@../tools/ntl_rr_lanczos.hpp libs/math/tools/ntl_rr_lanczos.hpp]:
-you will need change
-static_cast's to lexical_cast's, and the constants to /strings/
-(in order to ensure the coefficients aren't truncated to long double)
-and then specialise `lanczos_traits` for type T. Otherwise you may have to hack
-[@../../tools/lanczos_generator.cpp
-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.
-
-[endsect]
-
-[section:dist_concept Conceptual Requirements for Distribution Types]
-
-A /DistributionType/ is a type that implements the following conceptual
-requirements, and encapsulates a statistical distribution.
-
-Please note that this documentation should not be used as a substitute
-for the
-[link math_toolkit.dist.dist_ref reference documentation], and
-[link math_toolkit.dist.stat_tut tutorial] of the statistical
-distributions.
-
-In the following table, /d/ is an object of type `DistributionType`,
-/cd/ is an object of type `const DistributionType` and /cr/ is an
-object of a type convertible to `RealType`.
-
-[table
-[[Expression][Result Type][Notes]]
-[[DistributionType::value_type][RealType]
- [The real-number type /RealType/ upon which the distribution operates.]]
-[[DistributionType::policy_type][RealType]
- [The __Policy to use when evaluating functions that depend on this distribution.]]
-[[d = cd][Distribution&][Distribution types are assignable.]]
-[[Distribution(cd)][Distribution][Distribution types are copy constructible.]]
-[[pdf(cd, cr)][RealType][Returns the PDF of the distribution.]]
-[[cdf(cd, cr)][RealType][Returns the CDF of the distribution.]]
-[[cdf(complement(cd, cr))][RealType]
- [Returns the complement of the CDF of the distribution,
- the same as: `1-cdf(cd, cr)`]]
-[[quantile(cd, cr)][RealType][Returns the quantile of the distribution.]]
-[[quantile(complement(cd, cr))][RealType]
- [Returns the quantile of the distribution, starting from
- the complement of the probability, the same as: `quantile(cd, 1-cr)`]]
-[[chf(cd, cr)][RealType][Returns the cumulative hazard function of the distribution.]]
-[[hazard(cd, cr)][RealType][Returns the hazard function of the distribution.]]
-[[kurtosis(cd)][RealType][Returns the kurtosis of the distribution.]]
-[[kurtosis_excess(cd)][RealType][Returns the kurtosis excess of the distribution.]]
-[[mean(cd)][RealType][Returns the mean of the distribution.]]
-[[mode(cd)][RealType][Returns the mode of the distribution.]]
-[[skewness(cd)][RealType][Returns the skewness of the distribution.]]
-[[standard_deviation(cd)][RealType][Returns the standard deviation of the distribution.]]
-[[variance(cd)][RealType][Returns the variance of the distribution.]]
-]
-
-[endsect]
-
-[section:archetypes Conceptual Archetypes and Testing]
-
-There are several concept archetypes available:
-
-``#include <boost/concepts/std_real_concept.hpp>``
-
- namespace boost{
- namespace math{
- namespace concepts{
-
- class std_real_concept;
-
- }}} // namespaces
-
-`std_real_concept` is an archetype for the built-in Real types.
-
-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.
-
-In order to ensure that a call to say `pow` 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 using declaration
-to make them visible in the current scope. Unfortunately it's all
-to easy to forget the using declaration, and call the double version of
-the function that happens to be in the global scope by mistake.
-
-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 *only*
-compile if the all the standard library functions used have
-been brought into the current scope with a using declaration.
-
-There is a test program
-[@../../teststd_real_concept_check.cpp libs/math/test/std_real_concept_check.cpp]
-that instantiates every template in this library with type
-`std_real_concept` to verify it's usage of standard library functions.
-
-``#include <boost/math/concepts/real_concept.hpp>``
-
- namespace boost{
- namespace math{
- namespace concepts{
-
- class real_concept;
-
- }}} // namespaces
-
-`real_concept` is an archetype for [link math_toolkit.using_udt.concepts
-user defined real types], it
-declares it's standard library functions in it's 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 this is not a conceptual requirement
-for [link math_toolkit.using_udt.concepts RealType]'s.
-
-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
-[link math_toolkit.using_udt.use_ntl "Using With NTL - a High-Precision Floating-Point Library"].
-
-There is no specific test case for type `real_concept`, instead, since this
-type is usable at runtime, each individual test case as well as testing
-`float`, `double` and `long double`, also tests `real_concept`.
-
-``#include <boost/math/concepts/distribution.hpp>``
-
- namespace boost{
- namespace math{
- namespace concepts{
-
- template <class RealType>
- class distribution_archetype;
-
- template <class Distribution>
- struct DistributionConcept;
-
- }}} // namespaces
-
-The class template `distribution_archetype` is a model of the
-[link math_toolkit.using_udt.dist_concept Distribution concept].
-
-The class template `DistributionConcept` is a
-[@../../../../libs/concept_check/index.html concept checking class]
-for distribution types.
-
-The test program
-[@../../test/distribution_concept_check.cpp distribution_concept_check.cpp]
-is responsible for using `DistributionConcept` to verify that all the
-distributions in this library conform to the
-[link math_toolkit.using_udt.dist_concept Distribution concept].
-
-The class template `DistributionConcept` verifies the existence
-(but not proper function) of the non-member accessors
-required by the [link math_toolkit.using_udt.dist_concept Distribution concept].
-These are checked by calls like
-
-v = pdf(dist, x); // (Result v is ignored).
-
-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.)
-
-[endsect][/section:archetypes Conceptual Archetypes and Testing]
-
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/contact_info.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/contact_info.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,17 +0,0 @@
-
-[section:contact Contact Info and Support]
-
-The main support for this library is via the Boost mailing lists:
-
-* Use the
-[@http://www.boost.org/more/mailing_lists.htm#users boost-user list]
-for general support questions.
-* Use the
-[@http://www.boost.org/more/mailing_lists.htm#main boost-developer list]
-for discussion about implementation
-and or submission of extensions.
-
-You can also find JM at john - at - johnmaddock.co.uk and PAB at
-pbristow - at - hetp.u-net.com.
-
-[endsect]

Deleted: sandbox/math_toolkit/libs/math/doc/credits.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/credits.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,48 +0,0 @@
-[section:credits Credits and Acknowledgements]
-
-Hubert Holin started the Boost.Math library. The inverse
-hyperbolic functions, and the sinus cardinal functions are his.
-
-John Maddock started this library, the beta, gamma, erf, polynomial,
-and factorial functions are his, as is the "Toolkit" section, and many
-of the statistical distributions.
-
-Paul A. Bristow threw down the challenge in
-[@http://www2.open-std.org/JTC1/SC22/WG21/docs/papers/2004/n1668.pdf
-A Proposal to add Mathematical Functions for Statistics to the C++
-Standard Library] 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).
-
-Xiaogang Zhang worked on the Bessel functions and elliptic integrals for his
-Google Summer of Code project 2006.
-
-Professor Nico Temme for advice on the inverse incomplete beta function.
-
-[@http:www.shoup.net Victor Shoup for NTL],
-without which it would have much difficult to
-produce high accuracy constants, and especially
-the tables of accurate values for testing.
-
-We are grateful to Joel Guzman for helping us stress-test
-his
-[@http:www.boost.org/tools/quickbook/index.htm Boost.Quickbook]
-program used to generate the html and pdf versions
-of this document, adding several new features en route.
-
-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.
-
-[endsect][/section:roadmap Roadmap]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/digamma.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/digamma.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,144 +0,0 @@
-[section:digamma Digamma]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/digamma.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` digamma(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` digamma(T z, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-Returns the digamma or psi function of /x/. Digamma is defined as the logarithmic
-derivative of the gamma function:
-
-[equation digamma1]
-
-[$../graphs/digamma.png]
-
-[optional_policy]
-
-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.
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the result is of type `double` when T is an integer type, and type T otherwise.
-
-[h4 Accuracy]
-
-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 __zero_error.
-
-[table
-[[Significand Size] [Platform and Compiler] [Random Positive Values] [Values Near The Positive Root] [Values Near Zero] [Negative Values]]
-[[53] [Win32 Visual C++ 8] [Peak=0.98 Mean=0.36] [Peak=0.99 Mean=0.5] [Peak=0.95 Mean=0.5] [Peak=214 Mean=16] ]
-[[64] [Linux IA32 / GCC] [Peak=1.4 Mean=0.4] [Peak=1.3 Mean=0.45] [Peak=0.98 Mean=0.35] [Peak=180 Mean=13] ]
-[[64] [Linux IA64 / GCC] [Peak=0.92 Mean=0.4] [Peak=1.3 Mean=0.45] [Peak=0.98 Mean=0.4] [Peak=180 Mean=13] ]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=0.9 Mean=0.4] [Peak=1.1 Mean=0.5] [Peak=0.99 Mean=0.4] [Peak=64 Mean=6] ]
-]
-
-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.
-
-[h4 Testing]
-
-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 __lanczos see below).
-
-[h4 Implementation]
-
-The implementation is divided up into the following domains:
-
-For Negative arguments the reflection formula:
-
- digamma(1-x) = digamma(x) + pi/tan(pi*x);
-
-is used to make /x/ positive.
-
-For arguments in the range [0,1] the recurrence relation:
-
- digamma(x) = digamma(x+1) - 1/x
-
-is used to shift the evaluation to [1,2].
-
-For arguments in the range [1,2] a rational approximation [jm_rationals] is used (see below).
-
-For arguments in the range [2,BIG] the recurrence relation:
-
- digamma(x+1) = digamma(x) + 1/x;
-
-is used to shift the evaluation to the range [1,2].
-
-For arguments > BIG the asymptotic expansion:
-
-[equation digamma2]
-
-can be used. However, this expansion is divergent after a few terms:
-exactly how many terms depends on the size of /x/. Therefore the value
-of /BIG/ 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 /BIG/.
-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 `1/(x*x)`.
-
-The rational approximation [jm_rationals] in the range [1,2] is derived as follows.
-
-First a high precision approximation to digamma was constructed using a 60-term
-differentiated __lanczos, the form used is:
-
-[equation digamma3]
-
-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 `99-(1/y)` digits
-if /y/ 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).
-
-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.
-
-The rational approximation [jm_rationals] was optimised for absolute error using the form:
-
- digamma(x) = (x - X0)(Y + R(x - 1));
-
-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 /x/ 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) ['[*will not be zero]].
-
-
-[endsect][/section:digamma The Digamma Function]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/dist_algorithms.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/dist_algorithms.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,78 +0,0 @@
-[section:dist_algorithms Distribution Algorithms]
-
-[h4 Finding the Location and Scale for Normal and similar distributions]
-
-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.
-
-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.
-
-Complement versions are also provided, both with explicit and implicit (default) policy.
-
- using boost::math::policies::policy; // May be needed by users defining their own policies.
- using boost::math::complement; // Will be needed by users who want to use complements.
-
-[h4 find_location function]
-
-``#include <boost/math/distributions/find_location.hpp>``
-
- namespace boost{ namespace math{
-
- template <class Dist, class ``__Policy``> // explicit error handling policy
- typename Dist::value_type find_location( // For example, normal mean.
- typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p.
- // For example, a nominal minimum acceptable z, so that p * 100 % are > z
- typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z.
- typename Dist::value_type scale, // scale parameter, for example, normal standard deviation.
- const ``__Policy``& pol);
-
- template <class Dist> // with default policy.
- typename Dist::value_type find_location( // For example, normal mean.
- typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p.
- // For example, a nominal minimum acceptable z, so that p * 100 % are > z
- typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z.
- typename Dist::value_type scale); // scale parameter, for example, normal standard deviation.
-
- }} // namespaces
-
-[h4 find_scale function]
-
-``#include <boost/math/distributions/find_scale.hpp>``
-
- namespace boost{ namespace math{
-
- template <class Dist, class ``__Policy``>
- typename Dist::value_type find_scale( // For example, normal mean.
- typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p.
- // For example, a nominal minimum acceptable weight z, so that p * 100 % are > z
- typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z.
- typename Dist::value_type location, // location parameter, for example, normal distribution mean.
- const ``__Policy``& pol);
-
- template <class Dist> // with default policy.
- typename Dist::value_type find_scale( // For example, normal mean.
- typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p.
- // For example, a nominal minimum acceptable z, so that p * 100 % are > z
- typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z.
- typename Dist::value_type location) // location parameter, for example, normal distribution mean.
- }} // namespaces
-
-All argument must be finite, otherwise __domain_error is called.
-
-Probability arguments must be [0, 1], otherwise __domain_error is called.
-
-If the choice of arguments would give a negative scale, __domain_error is called, unless the policy is to ignore, when the negative (impossible) value of scale is returned.
-
-[link math_toolkit.dist.stat_tut.weg.find_eg Find Mean and standard deviation examples]
-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.
-
-[endsect] [/section:dist_algorithms dist_algorithms]
-
-[/ dist_algorithms.qbk
- Copyright 2007 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/dist_reference.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/dist_reference.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,128 +0,0 @@
-[section:dist_ref Statistical Distributions Reference]
-
-[include distributions/non_members.qbk]
-
-[section:dists Distributions]
-
-[include distributions/bernoulli.qbk]
-[include distributions/beta.qbk]
-[include distributions/binomial.qbk]
-[include distributions/cauchy.qbk]
-[include distributions/chi_squared.qbk]
-[include distributions/exponential.qbk]
-[include distributions/extreme_value.qbk]
-[include distributions/fisher.qbk]
-[include distributions/gamma.qbk]
-[include distributions/lognormal.qbk]
-[include distributions/negative_binomial.qbk]
-[include distributions/normal.qbk]
-[include distributions/pareto.qbk]
-[include distributions/poisson.qbk]
-[include distributions/rayleigh.qbk]
-[include distributions/students_t.qbk]
-[include distributions/triangular.qbk]
-[include distributions/weibull.qbk]
-[include distributions/uniform.qbk]
-
-[endsect][/section:dists Distributions]
-
-[include dist_algorithms.qbk]
-
-[endsect][/section:dist_ref Statistical Distributions and Functions Reference]
-
-
-[section:future Extras/Future Directions]
-
-[h4 Adding Additional Location and Scale Parameters]
-
-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 http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm] for more
-information.
-
-The obvious way to handle this is via an adapter template:
-
- template <class Dist>
- class scaled_distribution
- {
- scaled_distribution(
- const Dist dist,
- typename Dist::value_type location,
- typename Dist::value_type scale = 0);
- };
-
-Which would then have its own set of overloads for the non-member accessor functions.
-
-[h4 An "any_distribution" class]
-
-It would be fairly trivial 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:
-
- template <class RealType>
- class any_distribution
- {
- public:
- template <class Distribution>
- any_distribution(const Distribution& d);
- };
-
- // Get the cdf of the underlying distribution:
- template <class RealType>
- RealType cdf(const any_distribution<RealType>& d, RealType x);
- // etc....
-
-Such a class would facilitate the writing of non-template code that can
-function with any distribution type. 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.
-
-[h4 Higher Level Hypothesis Tests]
-
-Higher-level tests roughly corresponding to the
-[@http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/HypothesisTests.html Mathematica Hypothesis Tests]
-package could be added reasonably easily, for example:
-
- template <class InputIterator>
- typename std::iterator_traits<InputIterator>::value_type
- test_equal_mean(
- InputIterator a,
- InputIterator b,
- typename std::iterator_traits<InputIterator>::value_type expected_mean);
-
-Returns the probability that the data in the sequence [a,b) has the mean
-/expected_mean/.
-
-[h4 Integration With Statistical Accumulators]
-
-[@http://boost-sandbox.sourceforge.net/libs/accumulators/doc/html/index.html
-Eric Niebler's accumulator framework] - 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:
-
- // Define an accumulator, all required statistics to calculate the test
- // are calculated automatically:
- accumulator_set<double, features<tag::test_expected_mean> > acc(expected_mean=4);
- // Pass our data to the accumulator:
- acc = std::for_each(mydata.begin(), mydata.end(), acc);
- // Extract the result:
- double p = probability(acc);
-
-[endsect][/section:future Extras Future Directions]
-
-[/ dist_reference.qbk
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-
-
-
-
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/dist_tutorial.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/dist_tutorial.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,391 +0,0 @@
-[/ def names end in distrib to avoid clashes]
-[def __binomial_distrib [link math_toolkit.dist.dist_ref.dists.binomial_dist Binomial Distribution]]
-[def __chi_squared_distrib [link math_toolkit.dist.dist_ref.dists.chi_squared_dist Chi Squared Distribution]]
-[def __normal_distrib [link math_toolkit.dist.dist_ref.dists.normal_dist Normal Distribution]]
-[def __F_distrib [link math_toolkit.dist.dist_ref.dists.f_dist Fisher F Distribution]]
-[def __students_t_distrib [link math_toolkit.dist.dist_ref.dists.students_t_dist Students t Distribution]]
-
-[def __handbook [@http://www.itl.nist.gov/div898/handbook/
-NIST/SEMATECH e-Handbook of Statistical Methods.]]
-
-[section:stat_tut Statistical Distributions Tutorial]
-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.
-
-[section:overview Overview]
-
-[h4 Headers and Namespaces]
-
-All the code in this library is inside namespace boost::math.
-
-In order to use a distribution /my_distribution/ you will need to include
-either the header <boost/math/distributions/my_distribution.hpp> or
-the "include everything" header: <boost/math/distributions.hpp>.
-
-For example, to use the Students-t distribution include either
-<boost/math/distributions/students_t.hpp> or
-<boost/math/distributions.hpp>
-
-[h4 Distributions are Objects]
-
-Each kind of distribution in this library is a class type.
-
-[link math_toolkit.policy Policies] 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.
-
-[tip If you are familiar with statistics libraries using functions,
-and 'Distributions as Objects' seem alien, see
-[link math_toolkit.dist.stat_tut.weg.nag_library the comparison to
-other statistics libraries.]
-] [/tip]
-
-Making distributions class types does two things:
-
-* 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.
-* The distribution objects store any parameters associated with the
-distribution: for example, the Students-t distribution has a
-['degrees of freedom] parameter that controls the shape of the distribution.
-This ['degrees of freedom] parameter has to be provided
-to the Students-t object when it is constructed.
-
-Although the distribution classes in this library are templates, there
-are typedefs on type /double/ 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 - `RealType = double` -
-is nearly as convenient).
-Probably 95% of uses are covered by these typedefs:
-
- using namespace boost::math;
-
- // Construct a students_t distribution with 4 degrees of freedom:
- students_t d1(4);
-
- // Construct a double-precision beta distribution
- // with parameters a = 10, b = 20
- beta_distribution<> d2(10, 20); // Note: _distribution<> suffix !
-
-If you need to use the distributions with a type other than `double`,
-then you can instantiate the template directly: the names of the
-templates are the same as the `double` typedef but with `_distribution`
-appended, for example: __students_t_distrib or __binomial_distrib:
-
- // Construct a students_t distribution, of float type,
- // with 4 degrees of freedom:
- students_t_distribution<float> d3(4);
-
- // Construct a binomial distribution, of long double type,
- // with probability of success 0.3
- // and 20 trials in total:
- binomial_distribution<long double> d4(20, 0.3);
-
-The parameters passed to the distributions can be accessed via getter member
-functions:
-
- d1.degrees_of_freedom(); // returns 4.0
-
-This is all well and good, but not very useful so far. What we often want
-is to be able to calculate the /cumulative distribution functions/ and
-/quantiles/ etc for these distributions.
-
-[h4 Generic operations common to all distributions are non-member functions]
-
-Want to calculate the PDF (Probability Density Function) of a distribution?
-No problem, just use:
-
- pdf(my_dist, x); // Returns PDF (density) at point x of distribution my_dist.
-
-Or how about the CDF (Cumulative Distribution Function):
-
- cdf(my_dist, x); // Returns CDF (integral from -infinity to point x)
- // of distribution my_dist.
-
-And quantiles are just the same:
-
- quantile(my_dist, p); // Returns the value of the random variable x
- // such that cdf(my_dist, x) == 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 /n'th moment/ - then all you have to
-do is add the appropriate non-member functions, overloaded for each
-implemented distribution type.
-
-[tip
-
-[*Random numbers that approximate Quantiles of Distributions]
-
-If you want random numbers that are distributed in a specific way,
-for example in a uniform, normal or triangular,
-see [@http://www.boost.org/libs/random/ Boost.Random].
-
-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.
-] [/tip Random numbers that approximate Quantiles of Distributions]
-
-For example, the binomial distribution has two parameters:
-n (the number of trials) and p (the probability of success on one trial).
-
-The `binomial_distribution` constructor therefore has two parameters:
-
-`binomial_distribution(RealType n, RealType p);`
-
-For this distribution the random variate is k: the number of successes observed.
-The probability density\/mass function (pdf) is therefore written as ['f(k; n, p)].
-
-[note
-
-[*Random Variates and Distribution Parameters]
-
-[@http://en.wikipedia.org/wiki/Random_variate Random variates]
-and [@http://en.wikipedia.org/wiki/Parameter distribution parameters]
-are conventionally distinguished (for example in Wikipedia and Wolfram MathWorld
-by placing a semi-colon (or sometimes vertical bar)
-after the random variate (whose value you 'choose'),
-to separate the variate from the parameter(s) that defines the shape of the distribution.
-] [/tip Random Variates and Distribution Parameters]
-
-As noted above the non-member function `pdf` has one parameter for the distribution object,
-and a second for the random variate. So taking our binomial distribution
-example, we would write:
-
-`pdf(binomial_distribution<RealType>(n, p), k);`
-
-The distribution (effectively the random variate) is said to be 'supported' over a range that is
-[@http://en.wikipedia.org/wiki/Probability_distribution
- "the smallest closed set whose complement has probability zero"].
-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.
-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 `max`
-to `min` for the `RealType`.
-(See [link math_toolkit.backgrounders.implementation.handling_of_floating_point_infinity
-Handling of Floating-Point Infinity] for rationale).
-
-The range of random variate values that is permitted and supported can be
-tested by using two functions `range` and `support`.
-
-[note
-
-[*Discrete Probability Distributions]
-
-Note that the [@http://en.wikipedia.org/wiki/Discrete_probability_distribution
-discrete distributions], including the binomial, negative binomial, Poisson & Bernoulli,
-are all mathematically defined as discrete functions:
-that is to say the functions `cdf` and `pdf` are only defined for integral values
-of the random variate.
-
-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.
-
-Users wanting to enforce a strict mathematical model may use `floor`
-or `ceil` functions on the random variate prior to calling the distribution
-function.
-
-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
-/outwards/: 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 /at least/ the requested
-coverage will be present in the central region, and /no more than/
-the requested coverage will be present in the tails.
-
-This behaviour can be changed so that the quantile functions are rounded
-differently, or return a real-valued result using
-[link math_toolkit.policy.pol_overview Policies]. It is strongly
-recommended that you read the tutorial
-[link math_toolkit.policy.pol_tutorial.understand_dis_quant
-Understanding Quantiles of Discrete Distributions] before
-using the quantile function on a discrete distribtion. The
-[link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs]
-describe how to change the rounding policy
-for these distributions.
-
-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.
-]
-
-[#complements]
-[h4 Complements are supported too]
-
-Often you don't want the value of the CDF, but its complement, which is
-to say `1-p` rather than `p`. You could calculate the CDF and subtract
-it from `1`, but if `p` is very close to `1` then cancellation error
-will cause you to lose significant digits. In extreme cases, `p` may
-actually be equal to `1`, even though the true value of the complement is non-zero.
-
-[link why_complements See also ['"Why complements?"]]
-
-In this library, whenever you want to receive a complement, just wrap
-all the function arguments in a call to `complement(...)`, for example:
-
- students_t dist(5);
- cout << "CDF at t = 1 is " << cdf(dist, 1.0) << endl;
- cout << "Complement of CDF at t = 1 is " << cdf(complement(dist, 1.0)) << endl;
-
-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 `complement(...)`, for example:
-
- students_t dist(5);
-
- for(double i = 10; i < 1e10; i *= 10)
- {
- // Calculate the quantile for a 1 in i chance:
- double t = quantile(complement(dist, 1/i));
- // Print it out:
- cout << "Quantile of students-t with 5 degrees of freedom\n"
- "for a 1 in " << i << " chance is " << t << endl;
- }
-
-[tip
-
-[*Critical values are just quantiles]
-
-Some texts talk about quantiles, others about critical values, the basic rule is:
-
-['Lower critical values] are the same as the quantile.
-
-['Upper critical values] are the same as the quantile from the complement
-of the probability.
-
-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
-['lower critical value] for a probability of 0.05 is given by:
-
-`quantile(binomial(100, 0.1), 0.05)`
-
-and the ['upper critical value] is given by:
-
-`quantile(complement(binomial(100, 0.1), 0.05))`
-
-which return 4.82 and 14.63 respectively.
-]
-
-[#why_complements]
-[tip
-
-[*Why bother with complements anyway?]
-
-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 `0.999999940f`, then `1 - 0.999999940f = 5.96046448e-008`,
-but the result is actually accurate to just ['one single bit]: the only
-bit that didn't cancel out!
-
-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[super -9], 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:
-
-`quantile(complement(students_t(10000), 1e-9))`
-
-returns the expected t-statistic `6.00336`, where as:
-
-`quantile(students_t(10000), 1-1e-9f)`
-
-raises an overflow error, since it is the same as:
-
-`quantile(students_t(10000), 1)`
-
-Which has no finite result.
-]
-
-[h4 Parameters can be calculated]
-
-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:
-
- students_t::find_degrees_of_freedom(
- 1.3, // difference from true mean to detect
- 0.05, // maximum risk of falsely rejecting the null-hypothesis.
- 0.1, // maximum risk of falsely failing to reject the null-hypothesis.
- 0.13); // sample standard deviation
-
-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.
-
-[h4 Summary]
-
-* Distributions are objects, which are constructed from whatever
-parameters the distribution may have.
-* Member functions allow you to retrieve the parameters of a distribution.
-* Generic non-member functions provide access to the properties that
-are common to all the distributions (PDF, CDF, quantile etc).
-* Complements of probabilities are calculated by wrapping the function's
-arguments in a call to `complement(...)`.
-* Functions that accept a probability can accept a complement of the
-probability as well, by wrapping the function's
-arguments in a call to `complement(...)`.
-* Static member functions allow the parameters of a distribution
-to be found from other information.
-
-Now that you have the basics, the next section looks at some worked examples.
-
-[endsect] [/section:overview Overview]
-
-[section:weg Worked Examples]
-[include distributions/distribution_construction.qbk]
-[include distributions/students_t_examples.qbk]
-[include distributions/chi_squared_examples.qbk]
-[include distributions/f_dist_example.qbk]
-[include distributions/binomial_example.qbk]
-[include distributions/negative_binomial_example.qbk]
-[include distributions/normal_example.qbk]
-[include distributions/error_handling_example.qbk]
-[include distributions/find_location_and_scale.qbk]
-[include distributions/nag_library.qbk]
-[endsect] [/section:weg Worked Examples]
-
-[include background.qbk]
-
-[endsect] [/ section:stat_tut Statistical Distributions Tutorial]
-
-[/ dist_tutorial.qbk
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-
-
-
-
-
-
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/ellint_carlson.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/ellint_carlson.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,213 +0,0 @@
-[/
-Copyright (c) 2006 Xiaogang Zhang
-Copyright (c) 2006 John Maddock
-Use, modification and distribution are subject to the
-Boost Software License, Version 1.0. (See accompanying file
-LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-]
-
-[section:ellint_carlson Elliptic Integrals - Carlson Form]
-
-[heading Synopsis]
-
-``
- #include <boost/math/special_functions/ellint_rf.hpp>
-``
-
- namespace boost { namespace math {
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ellint_rf(T1 x, T2 y, T3 z)
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ellint_rf(T1 x, T2 y, T3 z, const ``__Policy``&)
-
- }} // namespaces
-
-
-``
- #include <boost/math/special_functions/ellint_rd.hpp>
-``
-
- namespace boost { namespace math {
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ellint_rd(T1 x, T2 y, T3 z)
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ellint_rd(T1 x, T2 y, T3 z, const ``__Policy``&)
-
- }} // namespaces
-
-
-``
- #include <boost/math/special_functions/ellint_rj.hpp>
-``
-
- namespace boost { namespace math {
-
- template <class T1, class T2, class T3, class T4>
- ``__sf_result`` ellint_rj(T1 x, T2 y, T3 z, T4 p)
-
- template <class T1, class T2, class T3, class T4, class ``__Policy``>
- ``__sf_result`` ellint_rj(T1 x, T2 y, T3 z, T4 p, const ``__Policy``&)
-
- }} // namespaces
-
-
-``
- #include <boost/math/special_functions/ellint_rc.hpp>
-``
-
- namespace boost { namespace math {
-
- template <class T1, class T2>
- ``__sf_result`` ellint_rc(T1 x, T2 y)
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` ellint_rc(T1 x, T2 y, const ``__Policy``&)
-
- }} // namespaces
-
-
-[heading Description]
-
-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:
-
-[$../graphs/ellint_c.png]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when the arguments are of different types: otherwise the return is the same type
-as the arguments.
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ellint_rf(T1 x, T2 y, T3 z)
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ellint_rf(T1 x, T2 y, T3 z, const ``__Policy``&)
-
-Returns Carlson's Elliptic Integral R[sub F]:
-
-[equation ellint9]
-
-Requires that all of the arguments are non-negative, and at most
-one may be zero. Otherwise returns the result of __domain_error.
-
-[optional_policy]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ellint_rd(T1 x, T2 y, T3 z)
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ellint_rd(T1 x, T2 y, T3 z, const ``__Policy``&)
-
-Returns Carlson's elliptic integral R[sub D]:
-
-[equation ellint10]
-
-Requires that x and y are non-negative, with at most one of them
-zero, and that z >= 0. Otherwise returns the result of __domain_error.
-
-[optional_policy]
-
- template <class T1, class T2, class T3, class T4>
- ``__sf_result`` ellint_rj(T1 x, T2 y, T3 z, T4 p)
-
- template <class T1, class T2, class T3, class T4, class ``__Policy``>
- ``__sf_result`` ellint_rj(T1 x, T2 y, T3 z, T4 p, const ``__Policy``&)
-
-Returns Carlson's elliptic integral R[sub J]:
-
-[equation ellint11]
-
-Requires that x, y and z are non-negative, with at most one of them
-zero, and that ['p != 0]. Otherwise returns the result of __domain_error.
-
-[optional_policy]
-
-When ['p < 0] the function returns the
-[@http://en.wikipedia.org/wiki/Cauchy_principal_value Cauchy principal value]
-using the relation:
-
-[equation ellint17]
-
- template <class T1, class T2>
- ``__sf_result`` ellint_rc(T1 x, T2 y)
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` ellint_rc(T1 x, T2 y, const ``__Policy``&)
-
-Returns Carlson's elliptic integral R[sub C]:
-
-[equation ellint12]
-
-Requires that ['x > 0] and that ['y != 0].
-Otherwise returns the result of __domain_error.
-
-[optional_policy]
-
-When ['y < 0] the function returns the
-[@http://mathworld.wolfram.com/CauchyPrincipalValue.html Cauchy principal value]
-using the relation:
-
-[equation ellint18]
-
-[heading Testing]
-
-There are two sets of tests.
-
-Spot tests compare selected values with test data given in:
-
-[:B. C. Carlson, ['[@http://arxiv.org/abs/math.CA/9409227
-Numerical computation of real or complex elliptic integrals]]. Numerical Algorithms,
-Volume 10, Number 1 / March, 1995, pp 13-26.]
-
-Random test data generated using NTL::RR at 1000-bit precision and our
-implementation checks for rounding-errors and/or regressions.
-
-There are also sanity checks that use the inter-relations between the integrals
-to verify their correctness: see the above Carlson paper for details.
-
-[heading Accuracy]
-
-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 __zero_error. All values
-are relative errors in units of epsilon.
-
-[table Errors Rates in the Carlson Elliptic Integrals
-[[Significand Size] [Platform and Compiler] [R[sub F]] [R[sub D]] [R[sub J]] [R[sub C]]]
-[[53] [Win32 / Visual C++ 8.0] [Peak=2.9 Mean=0.75] [Peak=2.6 Mean=0.9] [Peak=108 Mean=6.9] [Peak=2.4 Mean=0.6] ]
-[[64] [Red Hat Linux / G++ 3.4] [Peak=2.5 Mean=0.75] [Peak=2.7 Mean=0.9] [Peak=105 Mean=8] [Peak=1.9 Mean=0.7] ]
-[[113] [HP-UX / HP aCC 6] [Peak=5.3 Mean=1.6] [Peak=2.9 Mean=0.99] [Peak=180 Mean=12] [Peak=1.8 Mean=0.7] ]
-]
-
-[heading Implementation]
-
-The key of Carlson's algorithm [[link ellint_ref_carlson79 Carlson79]] is the
-duplication theorem:
-
-[equation ellint13]
-
-By applying it repeatedly, ['x], ['y], ['z] get
-closer and closer. When they are nearly equal, the special case equation
-
-[equation ellint16]
-
-is used. More specifically, ['[R F]] is evaluated from a Taylor series
-expansion to the fifth order. The calculations of the other three integrals
-are analogous.
-
-For ['p < 0] in ['R[sub J](x, y, z, p)] and ['y < 0] in ['R[sub C](x, y)],
-the integrals are singular and their
-[@http://mathworld.wolfram.com/CauchyPrincipalValue.html Cauchy principal values]
-are returned via the relations:
-
-[equation ellint17]
-
-[equation ellint18]
-
-[endsect]

Deleted: sandbox/math_toolkit/libs/math/doc/ellint_introduction.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/ellint_introduction.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,224 +0,0 @@
-[/
-Copyright (c) 2006 Xiaogang Zhang
-Use, modification and distribution are subject to the
-Boost Software License, Version 1.0. (See accompanying file
-LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-]
-
-[section:ellint_intro Elliptic Integral Overview]
-
-The main reference for the elliptic integrals is:
-
-[: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.]
-
-Mathworld also contain a lot of useful background information:
-
-[:[@http://mathworld.wolfram.com/EllipticIntegral.html Weisstein, Eric W.
-"Elliptic Integral." From MathWorld--A Wolfram Web Resource.]]
-
-As does [@http://en.wikipedia.org/wiki/Elliptic_integral Wikipedia Elliptic integral].
-
-[h4 Notation]
-
-All variables are real numbers unless otherwise noted.
-
-[h4 [#ellint_def]Definition]
-
-[equation ellint1]
-
-is called elliptic integral if ['R(t, s)] is a rational function
-of ['t] and ['s], and ['s[super 2]] is a cubic or quartic polynomial
-in ['t].
-
-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:
-
-Elliptic Integral of the First Kind (Legendre form)
-
-[equation ellint2]
-
-Elliptic Integral of the Second Kind (Legendre form)
-
-[equation ellint3]
-
-Elliptic Integral of the Third Kind (Legendre form)
-
-[equation ellint4]
-
-where
-
-[equation ellint5]
-
-[note ['[phi]] is called the amplitude.
-
-['k] is called the modulus.
-
-['[alpha]] is called the modular angle.
-
-['n] is called the characteristic.]
-
-[caution Perhaps more than any other special functions the elliptic
-integrals are expressed in a variety of different ways. In particular,
-the final parameter /k/ (the modulus) may be expressed using a modular
-angle [alpha], or a parameter /m/. These are related by:
-
-k = sin[alpha]
-
-m = k[super 2] = sin[super 2][alpha]
-
-So that the integral of the third kind (for example) may be expressed as
-either:
-
-[Pi](n, [phi], k)
-
-[Pi](n, [phi] \\ [alpha])
-
-[Pi](n, [phi]| m)
-
-To further complicate matters, some texts refer to the ['complement
-of the parameter m], or 1 - m, where:
-
-1 - m = 1 - k[super 2] = cos[super 2][alpha]
-
-This implementation uses /k/ throughout: this matches the requirements
-of the [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf
-Technical Report on C++ Library Extensions]. However, you should
-be extra careful when using these functions!]
-
-When ['[phi]] = ['[pi]] / 2, the elliptic integrals are called ['complete].
-
-Complete Elliptic Integral of the First Kind (Legendre form)
-
-[equation ellint6]
-
-Complete Elliptic Integral of the Second Kind (Legendre form)
-
-[equation ellint7]
-
-Complete Elliptic Integral of the Third Kind (Legendre form)
-
-[equation ellint8]
-
-Carlson [[link ellint_ref_carlson77 Carlson77]] [[link ellint_ref_carlson78 Carlson78]] gives an alternative definition of
-elliptic integral's canonical forms:
-
-Carlson's Elliptic Integral of the First Kind
-
-[equation ellint9]
-
-where ['x], ['y], ['z] are nonnegative and at most one of them
-may be zero.
-
-Carlson's Elliptic Integral of the Second Kind
-
-[equation ellint10]
-
-where ['x], ['y] are nonnegative, at most one of them may be zero,
-and ['z] must be positive.
-
-Carlson's Elliptic Integral of the Third Kind
-
-[equation ellint11]
-
-where ['x], ['y], ['z] are nonnegative, at most one of them may be
-zero, and ['p] must be nonzero.
-
-Carlson's Degenerate Elliptic Integral
-
-[equation ellint12]
-
-where ['x] is nonnegative and ['y] is nonzero.
-
-[note ['R[sub C](x, y) = R[sub F](x, y, y)]
-
-['R[sub D](x, y, z) = R[sub J](x, y, z, z)]]
-
-
-[h4 [#ellint_theorem]Duplication Theorem]
-
-Carlson proved in [[link ellint_ref_carlson78 Carlson78]] that
-
-[equation ellint13]
-
-[h4 [#ellint_formula]Carlson's Formulas]
-
-The Legendre form and Carlson form of elliptic integrals are related
-by equations:
-
-[equation ellint14]
-
-In particular,
-
-[equation ellint15]
-
-[h4 Numerical Algorithms]
-
-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 [[link ellint_ref_carlson79 Carlson79]] [[link ellint_ref_carlson78 Carlson78]], by contrast,
-provides a unified method for all three kinds of elliptic integrals
-with satisfactory precisions.
-
-[h4 [#ellint_refs]References]
-
-Special mention goes to:
-
-[:A. M. Legendre, ['Traitd des Fonctions Elliptiques et des Integrales
-Euleriennes], Vol. 1. Paris (1825).]
-
-However the main references are:
-
-# [#ellint_ref_AS]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.
-# [#ellint_ref_carlson79]B.C. Carlson, ['Computing elliptic integrals by duplication],
- Numerische Mathematik, vol 33, 1 (1979).
-# [#ellint_ref_carlson77]B.C. Carlson, ['Elliptic Integrals of the First Kind],
- SIAM Journal on Mathematical Analysis, vol 8, 231 (1977).
-# [#ellint_ref_carlson78]B.C. Carlson, ['Short Proofs of Three Theorems on Elliptic Integrals],
- SIAM Journal on Mathematical Analysis, vol 9, 524 (1978).
-# [#ellint_ref_carlson81]B.C. Carlson and E.M. Notis, ['ALGORITHM 577: Algorithms for Incomplete
- Elliptic Integrals], ACM Transactions on Mathematmal Software,
- vol 7, 398 (1981).
-# B. C. Carlson, ['On computing elliptic integrals and functions]. J. Math. and
-Phys., 44 (1965), pp. 36-51.
-# B. C. Carlson, ['A table of elliptic integrals of the second kind]. Math. Comp., 49
-(1987), pp. 595-606. (Supplement, ibid., pp. S13-S17.)
-# B. C. Carlson, ['A table of elliptic integrals of the third kind]. Math. Comp., 51 (1988),
-pp. 267-280. (Supplement, ibid., pp. S1-S5.)
-# B. C. Carlson, ['A table of elliptic integrals: cubic cases]. Math. Comp., 53 (1989), pp.
-327-333.
-# B. C. Carlson, ['A table of elliptic integrals: one quadratic factor]. Math. Comp., 56 (1991),
-pp. 267-280.
-# B. C. Carlson, ['A table of elliptic integrals: two quadratic factors]. Math. Comp., 59
-(1992), pp. 165-180.
-# B. C. Carlson, ['[@http://arxiv.org/abs/math.CA/9409227
-Numerical computation of real or complex elliptic integrals]]. Numerical Algorithms,
-Volume 10, Number 1 / March, 1995, p13-26.
-# B. C. Carlson and John L. Gustafson, ['[@http://arxiv.org/abs/math.CA/9310223
-Asymptotic Approximations for Symmetric Elliptic Integrals]],
-SIAM Journal on Mathematical Analysis, Volume 25, Issue 2 (March 1994), 288-303.
-
-
-The following references, while not directly relevent to our implementation,
-may also be of interest:
-
-# R. Burlisch, ['Numerical Compuation of Elliptic Integrals and Elliptic Functions.]
-Numerical Mathematik 7, 78-90.
-# R. Burlisch, ['An extension of the Bartky Transformation to Incomplete
-Elliptic Integrals of the Third Kind]. Numerical Mathematik 13, 266-284.
-# R. Burlisch, ['Numerical Compuation of Elliptic Integrals and Elliptic Functions. III].
-Numerical Mathematik 13, 305-315.
-# T. Fukushima and H. Ishizaki, ['[@http://adsabs.harvard.edu/abs/1994CeMDA..59..237F
-Numerical Computation of Incomplete Elliptic Integrals of a General Form.]]
-Celestial Mechanics and Dynamical Astronomy, Volume 59, Number 3 / July, 1994,
-237-251.
-
-[endsect]

Deleted: sandbox/math_toolkit/libs/math/doc/ellint_legendre.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/ellint_legendre.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,343 +0,0 @@
-[/
-Copyright (c) 2006 Xiaogang Zhang
-Copyright (c) 2006 John Maddock
-Use, modification and distribution are subject to the
-Boost Software License, Version 1.0. (See accompanying file
-LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-]
-
-[section:ellint_1 Elliptic Integrals of the First Kind - Legendre Form]
-
-[heading Synopsis]
-
-``
- #include <boost/math/special_functions/ellint_1.hpp>
-``
-
- namespace boost { namespace math {
-
- template <class T1, class T2>
- ``__sf_result`` ellint_1(T1 k, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` ellint_1(T1 k, T2 phi, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` ellint_1(T k);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` ellint_1(T k, const ``__Policy``&);
-
- }} // namespaces
-
-[heading Description]
-
-These two functions evaluate the incomplete elliptic integral of the first kind
-['F([phi], k)] and its complete counterpart ['K(k) = F([pi]/2, k)].
-
-[$../graphs/ellint_1.png]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types: when they are the same type then the result
-is the same type as the arguments.
-
- template <class T1, class T2>
- ``__sf_result`` ellint_1(T1 k, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` ellint_1(T1 k, T2 phi, const ``__Policy``&);
-
-Returns the incomplete elliptic integral of the first kind ['F([phi], k)]:
-
-[equation ellint2]
-
-Requires -1 <= k <= 1, otherwise returns the result of __domain_error.
-
-[optional_policy]
-
- template <class T>
- ``__sf_result`` ellint_1(T k);
-
- template <class T>
- ``__sf_result`` ellint_1(T k, const ``__Policy``&);
-
-Returns the complete elliptic integral of the first kind ['K(k)]:
-
-[equation ellint6]
-
-Requires -1 <= k <= 1, otherwise returns the result of __domain_error.
-
-[optional_policy]
-
-[heading Accuracy]
-
-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 __zero_error. All values
-are relative errors in units of epsilon.
-
-[table Errors Rates in the Elliptic Integrals of the First Kind
-[[Significand Size] [Platform and Compiler] [F([phi], k)] [K(k)] ]
-[[53] [Win32 / Visual C++ 8.0] [Peak=3 Mean=0.8] [Peak=1.8 Mean=0.7] ]
-[[64] [Red Hat Linux / G++ 3.4] [Peak=2.6 Mean=1.7] [Peak=2.2 Mean=1.8] ]
-[[113] [HP-UX / HP aCC 6] [Peak=4.6 Mean=1.5] [Peak=3.7 Mean=1.5] ]
-]
-
-
-[heading Testing]
-
-The tests use a mixture of spot test values calculated using the online
-calculator at [@http://functions.wolfram.com/ functions.wolfram.com],
-and random test data generated using
-NTL::RR at 1000-bit precision and this implementation.
-
-[heading Implementation]
-
-These functions are implemented in terms of Carlson's integrals
-using the relations:
-
-[equation ellint19]
-
-and
-
-[equation ellint20]
-
-
-[endsect]
-
-[section:ellint_2 Elliptic Integrals of the Second Kind - Legendre Form]
-
-[heading Synopsis]
-
-``
- #include <boost/math/special_functions/ellint_2.hpp>
-``
-
- namespace boost { namespace math {
-
- template <class T1, class T2>
- ``__sf_result`` ellint_2(T1 k, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` ellint_2(T1 k, T2 phi, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` ellint_2(T k);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` ellint_2(T k, const ``__Policy``&);
-
- }} // namespaces
-
-[heading Description]
-
-These two functions evaluate the incomplete elliptic integral of the second kind
-['E([phi], k)] and its complete counterpart ['E(k) = E([pi]/2, k)].
-
-[$../graphs/ellint_2.png]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types: when they are the same type then the result
-is the same type as the arguments.
-
- template <class T1, class T2>
- ``__sf_result`` ellint_2(T1 k, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` ellint_2(T1 k, T2 phi, const ``__Policy``&);
-
-Returns the incomplete elliptic integral of the second kind ['E([phi], k)]:
-
-[equation ellint3]
-
-Requires -1 <= k <= 1, otherwise returns the result of __domain_error.
-
-[optional_policy]
-
- template <class T>
- ``__sf_result`` ellint_2(T k);
-
- template <class T>
- ``__sf_result`` ellint_2(T k, const ``__Policy``&);
-
-Returns the complete elliptic integral of the first kind ['E(k)]:
-
-[equation ellint7]
-
-Requires -1 <= k <= 1, otherwise returns the result of __domain_error.
-
-[optional_policy]
-
-[heading Accuracy]
-
-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 __zero_error. All values
-are relative errors in units of epsilon.
-
-[table Errors Rates in the Elliptic Integrals of the Second Kind
-[[Significand Size] [Platform and Compiler] [F([phi], k)] [K(k)] ]
-[[53] [Win32 / Visual C++ 8.0] [Peak=4.6 Mean=1.2] [Peak=3.5 Mean=1.0] ]
-[[64] [Red Hat Linux / G++ 3.4] [Peak=4.3 Mean=1.1] [Peak=4.6 Mean=1.2] ]
-[[113] [HP-UX / HP aCC 6] [Peak=5.8 Mean=2.2] [Peak=10.8 Mean=2.3] ]
-]
-
-
-[heading Testing]
-
-The tests use a mixture of spot test values calculated using the online
-calculator at [@functions.wolfram.com
-functions.wolfram.com], and random test data generated using
-NTL::RR at 1000-bit precision and this implementation.
-
-[heading Implementation]
-
-These functions are implemented in terms of Carlson's integrals
-using the relations:
-
-[equation ellint21]
-
-and
-
-[equation ellint22]
-
-
-[endsect]
-
-[section:ellint_3 Elliptic Integrals of the Third Kind - Legendre Form]
-
-[heading Synopsis]
-
-``
- #include <boost/math/special_functions/ellint_3.hpp>
-``
-
- namespace boost { namespace math {
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ellint_3(T1 k, T2 n, T3 phi);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ellint_3(T1 k, T2 n, T3 phi, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` ellint_3(T1 k, T2 n);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` ellint_3(T1 k, T2 n, const ``__Policy``&);
-
- }} // namespaces
-
-[heading Description]
-
-These two functions evaluate the incomplete elliptic integral of the third kind
-['[Pi](n, [phi], k)] and its complete counterpart ['[Pi](n, k) = E(n, [pi]/2, k)].
-
-[$../graphs/ellint_3.png]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when the arguments are of different types: when they are the same type then the result
-is the same type as the arguments.
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ellint_3(T1 k, T2 n, T3 phi);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ellint_3(T1 k, T2 n, T3 phi, const ``__Policy``&);
-
-Returns the incomplete elliptic integral of the third kind ['[Pi](n, [phi], k)]:
-
-[equation ellint4]
-
-Requires ['-1 <= k <= 1] and ['n < 1/sin[super 2]([phi])], otherwise
-returns the result of __domain_error (outside this range the result
-would be complex).
-
-[optional_policy]
-
-[caution In addition, the region where ['n > 1] and [phi][space] ['is not in the range]
-\[0, [pi]\/2\] is currently unsupported and returns the result of __domain_error.
-For this reason it is recomended that you keep [phi][space] inside its "natural" range
-of \[0, [pi]\/2\].]
-
- template <class T1, class T2>
- ``__sf_result`` ellint_3(T1 k, T2 n);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` ellint_3(T1 k, T2 n, const ``__Policy``&);
-
-Returns the complete elliptic integral of the first kind ['[Pi](n, k)]:
-
-[equation ellint8]
-
-Requires ['-1 <= k <= 1] and ['n < 1], otherwise returns the
-result of __domain_error (outside this range the result would be complex).
-
-[opitonal_policy]
-
-[heading Accuracy]
-
-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 __zero_error. All values
-are relative errors in units of epsilon.
-
-[table Errors Rates in the Elliptic Integrals of the Third Kind
-[[Significand Size] [Platform and Compiler] [[Pi](n, [phi], k)] [[Pi](n, k)] ]
-[[53] [Win32 / Visual C++ 8.0] [Peak=29 Mean=2.2] [Peak=3 Mean=0.8] ]
-[[64] [Red Hat Linux / G++ 3.4] [Peak=14 Mean=1.3] [Peak=2.3 Mean=0.8] ]
-[[113] [HP-UX / HP aCC 6] [Peak=10 Mean=1.4] [Peak=4.2 Mean=1.1] ]
-]
-
-
-[heading Testing]
-
-The tests use a mixture of spot test values calculated using the online
-calculator at [@functions.wolfram.com
-functions.wolfram.com], and random test data generated using
-NTL::RR at 1000-bit precision and this implementation.
-
-[heading Implementation]
-
-The implementation for [Pi](n, [phi], k) first siphons off the special cases:
-
-['[Pi](0, [phi], k) = F([phi], k)]
-
-['[Pi](n, [pi]/2, k) = [Pi](n, k)]
-
-and
-
-[equation ellint23]
-
-Then if n < 0 the relations (A&S 17.7.15/16):
-
-[equation ellint24]
-
-are used to shift /n/ to the range \[0, 1\].
-
-Then the relations:
-
-['[Pi](n, -[phi], k) = -[Pi](n, [phi], k)]
-
-['[Pi](n, [phi]+m[pi], k) = [Pi](n, [phi], k) + 2m[Pi](n, k)]
-
-are used to move [phi][space] to the range \[0, [pi]\/2\].
-
-The functions are then implemented in terms of Carlson's integrals
-using the relations:
-
-[equation ellint25]
-
-and
-
-[equation ellint26]
-
-The remaining problem area occurs when n > 1 and [phi][space] is outside
-the range \[0, [pi]\/2\]. In this range the reduction formula for
-large [phi][space] can no longer be applied. Likewise the identities 17.7.7/8
-in A&S for reducing n to the range \[0,1\] appear to be no longer applicable.
-
-[endsect]

Deleted: sandbox/math_toolkit/libs/math/doc/erf.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/erf.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,213 +0,0 @@
-[section:error_function Error Functions]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/erf.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` erf(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` erf(T z, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` erfc(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` erfc(T z, const ``__Policy``&);
-
- }} // namespaces
-
-The return type of these functions is computed using the __arg_pomotion_rules:
-the return type is `double` if T is an integer type, and T otherwise.
-
-[optional_policy]
-
-[h4 Description]
-
- template <class T>
- ``__sf_result`` erf(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` erf(T z, const ``__Policy``&);
-
-Returns the [@http://en.wikipedia.org/wiki/Error_function error function]
-[@http://functions.wolfram.com/GammaBetaErf/Erf/ erf] of z:
-
-[equation erf1]
-
-[$../graphs/erf1.png]
-
- template <class T>
- ``__sf_result`` erfc(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` erfc(T z, const ``__Policy``&);
-
-Returns the complement of the [@http://functions.wolfram.com/GammaBetaErf/Erfc/ error function] of z:
-
-[equation erf2]
-
-[$../graphs/erf2.png]
-
-[h4 Accuracy]
-
-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, __glibc, __hpc and __cephes libraries.
-Unless otherwise specified any floating point type that is narrower
-than the one shown will have __zero_error.
-
-[table Errors In the Function erf(z)
-[[Significand Size] [Platform and Compiler] [z < 0.5] [0.5 < z < 8] [z > 8]]
-[[53] [Win32, Visual C++ 8] [Peak=0 Mean=0
-
-GSL Peak=2.0 Mean=0.3
-
-__cephes Peak=1.1 Mean=0.7] [Peak=0.9 Mean=0.09
-
-GSL Peak=2.3 Mean=0.3
-
-__cephes Peak=1.3 Mean=0.2] [Peak=0 Mean=0
-
-GSL Peak=0 Mean=0
-
-__cephes Peak=0 Mean=0]]
-[[64] [RedHat Linux IA32, gcc-3.3] [Peak=0.7 Mean=0.07
-
-__glibc Peak=0.9 Mean=0.2] [Peak=0.9 Mean=0.2
-
-__glibc Peak=0.9 Mean=0.07] [Peak=0 Mean=0
-
-__glibc Peak=0 Mean=0]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=0.7 Mean=0.07
-
-__glibc Peak=0 Mean=0] [Peak=0.9 Mean=0.1
-
-__glibc Peak=0.5 Mean=0.03] [Peak=0 Mean=0
-
-__glibc Peak=0 Mean=0]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=0.8 Mean=0.1
-
-__hpc Lib Peak=0.9 Mean=0.2] [Peak=0.9 Mean=0.1
-
-__hpc Lib Peak=0.5 Mean=0.02] [Peak=0 Mean=0
-
-__hpc Lib Peak=0 Mean=0]]
-]
-
-[table Errors In the Function erfc(z)
-[[Significand Size] [Platform and Compiler] [z < 0.5] [0.5 < z < 8] [z > 8]]
-[[53] [Win32, Visual C++ 8] [Peak=0.7 Mean=0.06
-
-GSL Peak=1.0 Mean=0.4
-
-__cephes Peak=0.7 Mean=0.06] [Peak=0.99 Mean=0.3
-
-GSL Peak=2.6 Mean=0.6
-
-__cephes Peak=3.6 Mean=0.7] [Peak=1.0 Mean=0.2
-
-GSL Peak=3.9 Mean=0.4
-
-__cephes Peak=2.7 Mean=0.4]]
-[[64] [RedHat Linux IA32, gcc-3.3] [Peak=0 Mean=0
-
-__glibc Peak=0 Mean=0] [Peak=1.4 Mean=0.3
-
-__glibc Peak=1.3 Mean=0.3] [Peak=1.6 Mean=0.4
-
-__glibc Peak=1.3 Mean=0.4]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=0 Mean=0
-
-__glibc Peak=0 Mean=0] [Peak=1.4 Mean=0.3
-
-__glibc Peak=0 Mean=0] [Peak=1.5 Mean=0.4
-
-__glibc Peak=0 Mean=0] ]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=0 Mean=0
-
-__hpc Peak=0 Mean=0] [Peak=1.5 Mean=0.3
-
-__hpc Peak=0.9 Mean=0.08] [Peak=1.6 Mean=0.4
-
-__hpc Peak=0.9 Mean=0.1]]
-]
-
-[h4 Testing]
-
-The tests for these functions come in two parts:
-basic sanity checks use spot values calculated using
-[@http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=Erf Mathworld's online evaluator],
-while accuracy checks use high-precision test values calculated at 1000-bit precision with
-[@http://shoup.net/ntl/doc/RR.txt 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.
-
-[h4 Implementation]
-
-All versions of these functions first use the usual reflection formulas
-to make their arguments positive:
-
- erf(-z) = 1 - erf(z);
-
- erfc(-z) = 2 - erfc(z); // preferred when -z < -0.5
-
- erfc(-z) = 1 + erf(z); // preferred when -0.5 <= -z < 0
-
-The generic versions of these functions are implemented in terms of
-the incomplete gamma function.
-
-When the significand (mantissa) size is recognised
-(currently for 53, 64 and 113-bit reals, plus single-precision 24-bit handled via promotion to double)
-then a series of rational approximations [jm_rationals] are used.
-
-For `z <= 0.5` then a rational approximation to erf is used, based on the
-observation that:
-
- erf(z)/z ~ 1.12....
-
-Therefore erf is calculated using:
-
- erf(z) = z * (1.125F + R(z));
-
-where the rational approximation R(z) is optimised for absolute error:
-as long as its absolute error is small enough compared to 1.125, then any
-round-off error incurred during the computation of R(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.
-
-For `z > 0.5` we observe that over a small interval [a, b) then:
-
- erfc(z) * exp(z*z) * z ~ c
-
-for some constant c.
-
-Therefore for `z > 0.5` we calculate erfc using:
-
- erfc(z) = exp(-z*z) * (c + R(z)) / z;
-
-Again R(z) is optimised for absolute error, and the constant `c` is
-the average of `erfc(z) * exp(z*z) * z` taken at the endpoints of the range.
-Once again, as long as the absolute error in R(z) is small
-compared to `c` then `c + R(z)` 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.
-
-[endsect]
-[/ :error_function The Error Functions]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/erf_inv.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/erf_inv.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,132 +0,0 @@
-[section:error_inv Error Function Inverses]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/erf.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` erf_inv(T p);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` erf_inv(T p, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` erfc_inv(T p);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` erfc_inv(T p, const ``__Policy``&);
-
- }} // namespaces
-
-The return type of these functions is computed using the __arg_pomotion_rules:
-the return type is `double` if T is an integer type, and T otherwise.
-
-[optional_policy]
-
-[h4 Description]
-
- template <class T>
- ``__sf_result`` erf_inv(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` erf_inv(T z, const ``__Policy``&);
-
-Returns the [@http://functions.wolfram.com/GammaBetaErf/InverseErf/ inverse error function]
-of z, that is a value x such that:
-
- p = erf(x);
-
-[$../graphs/erf_inv.png]
-
- template <class T>
- ``__sf_result`` erfc_inv(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` erfc_inv(T z, const ``__Policy``&);
-
-Returns the inverse of the complement of the error function of z, that is a
-value x such that:
-
- p = erfc(x);
-
-[$../graphs/erfc_inv.png]
-
-[h4 Accuracy]
-
-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
-[link math_toolkit.special.sf_erf.error_function forward error functions].
-
-[h4 Testing]
-
-There are two sets of tests:
-
-* Basic sanity checks attempt to "round-trip" from
-/x/ to /p/ 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
-/p/ 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.
-* Accuracy checks using high-precision test values. These measure
-the accuracy of the result, given /exact/ input values.
-
-[h4 Implementation]
-
-These functions use a rational approximation [jm_rationals]
-to calculate an initial
-approximation to the result that is accurate to ~10[super -19],
-then only if that has insufficient accuracy compared to the epsilon for T,
-do we clean up the result using
-[@http://en.wikipedia.org/wiki/Simple_rational_approximation Halley iteration].
-
-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[super -34 ] accuracy suitable for use with 128-bit
-reals.
-
-In the following discussion, /p/ is the value passed to erf_inv, and /q/ is
-the value passed to erfc_inv, so that /p = 1 - q/ and /q = 1 - p/ and in both
-cases we want to solve for the same result /x/.
-
-For /p < 0.5/ the inverse erf function is reasonably smooth and the approximation:
-
- x = p(p + 10)(Y + R(p))
-
-Gives a good result for a constant Y, and R(p) optimised for low absolute error
-compared to |Y|.
-
-For q < 0.5 things get trickier, over the interval /0.5 > q > 0.25/
-the following approximation works well:
-
- x = sqrt(-2log(q)) / (Y + R(q))
-
-While for q < 0.25, let
-
- z = sqrt(-log(q))
-
-Then the result is given by:
-
- x = z(Y + R(z - B))
-
-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 /z/ 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 `long double` precision the extended exponent range compared to
-`double` means that the tail goes on for a very long way indeed).
-
-[endsect][/ :error_inv The Error Function Inverses]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/error.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/error.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,71 +0,0 @@
-[section:relative_error Relative Error]
-
-Given an actual value /a/ and a found value /v/ the relative error can be
-calculated from:
-
-[equation error2]
-
-However the test programs in the library use the symmetrical form:
-
-[equation error1]
-
-which measures /relative difference/ 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.
-
-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 `std::numeric_limits<>::min()`:
-in other words all denormalised numbers are regarded as a zero.
-
-All the test programs calculate /quantized relative error/, whereas the graphs
-in this manual are produced with the /actual error/. 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 /units in the last place/
-either rounded up from the actual error, or rounded down (possibly to zero).
-In contrast the /true error/ 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 /units in the last place/.
-
-Note that throughout this manual and the test programs the relative error is
-usually quoted in units of epsilon. However, remember that /units in the last place/
-more accurately reflect the number of contaminated digits, and that relative
-error can /"wobble"/ by a factor of 2 compared to /units in the last place/.
-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!
-
-[#zero_error][h4 The Impossibility of Zero Error]
-
-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
-/transcendental number/
-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 /the table makers 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....
-
-Refer to the classic text
-[@http://docs.sun.com/source/806-3568/ncg_goldberg.html What Every Computer Scientist Should Know About Floating-Point Arithmetic]
-for more information.
-
-[endsect][/section:relative_error Relative Error]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/error_handling.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/error_handling.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,318 +0,0 @@
-[section:error_handling Error Handling]
-
-[def __format [@../../libs/format/index.html Boost.Format]]
-
-[heading Quick Reference]
-
-Handling of errors by this library is split into two orthogonal parts:
-
-* What kind of error has been raised?
-* What should be done when the error is raised?
-
-The kinds of errors that can be raised are:
-
-[variablelist
-[[Domain Error][Occurs when one or more arguments to a function
- are out of range.]]
-[[Pole Error][Occurs when the particular arguments cause the function to be
- evaluated at a pole with no well defined residual value. For example if
- __tgamma 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.]]
-[[Overflow Error][Occurs when the result is either infinite, or too large
- to represent in the numeric type being returned by the function.]]
-[[Underflow Error][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.]]
-[[Denormalisation Error][Occurs when the returned result would be a denormalised value.]]
-[[Evaluation Error][Occurs when an internal error occured 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.]]
-]
-
-The action undertaken by each error condition is determined by the current
-__Policy 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).
-
-The available actions are:
-
-[variablelist
-[[throw_on_error][Throws the exception most appropriate to the error condition.]]
-[[errno_on_error][Sets ::errno to an appropriate value, and then returns the most
-appropriate result]]
-[[ignore_error][Ignores the error and simply the returns the most appropriate result.]]
-[[user_error][Calls a
- [link math_toolkit.policy.pol_tutorial.user_defined_error_policies user-supplied error handler].]]
-]
-
-The following tables show all the permutations of errors and actions,
-with the default action for each error shown in bold:
-
-[table Possible Actions for Domain Errors
-[[Action] [Behaviour]]
-[[throw_on_error][[*Throws `std::domain_error`]]]
-[[errno_on_error][Sets `::errno` to `EDOM` and returns `std::numeric_limits<T>::quiet_NaN()`]]
-[[ignore_error][Returns `std::numeric_limits<T>::quiet_NaN()`]]
-[[user_error][Returns the result of `boost::math::policies::user_domain_error`:
- [link math_toolkit.policy.pol_tutorial.user_defined_error_policies
- this function must be defined by the user].]]
-]
-
-[table Possible Actions for Pole Errors
-[[Action] [Behaviour]]
-[[throw_on_error] [[*Throws `std::domain_error`]]]
-[[errno_on_error][Sets `::errno` to `EDOM` and returns `std::numeric_limits<T>::quiet_NaN()`]]
-[[ignore_error][Returns `std::numeric_limits<T>::quiet_NaN()`]]
-[[user_error][Returns the result of `boost::math::policies::user_pole_error`:
- [link math_toolkit.policy.pol_tutorial.user_defined_error_policies
- this function must be defined by the user].]]
-]
-
-[table Possible Actions for Overflow Errors
-[[Action] [Behaviour]]
-[[throw_on_error][[*Throws `std::overflow_error`]]]
-[[errno_on_error][Sets `::errno` to `ERANGE` and returns `std::numeric_limits<T>::infinity()`]]
-[[ignore_error][Returns `std::numeric_limits<T>::infinity()`]]
-[[user_error][Returns the result of `boost::math::policies::user_overflow_error`:
- [link math_toolkit.policy.pol_tutorial.user_defined_error_policies
- this function must be defined by the user].]]
-]
-
-[table Possible Actions for Underflow Errors
-[[Action] [Behaviour]]
-[[throw_on_error][Throws `std::underflow_error`]]
-[[errno_on_error][Sets `::errno` to `ERANGE` and returns 0.]]
-[[ignore_error][[*Returns 0]]]
-[[user_error][Returns the result of `boost::math::policies::user_underflow_error`:
- [link math_toolkit.policy.pol_tutorial.user_defined_error_policies
- this function must be defined by the user].]]
-]
-
-[table Possible Actions for Denorm Errors
-[[Action] [Behaviour]]
-[[throw_on_error][Throws `std::underflow_error`]]
-[[errno_on_error][Sets `::errno` to `ERANGE` and returns the denormalised value.]]
-[[ignore_error][[*Returns the denormalised value.]]]
-[[user_error][Returns the result of `boost::math::policies::user_denorm_error`:
- [link math_toolkit.policy.pol_tutorial.user_defined_error_policies
- this function must be defined by the user].]]
-]
-
-[table Possible Actions for Internal Evaluation Errors
-[[Action] [Behaviour]]
-[[throw_on_error][[*Throws `boost::math::evaluation_error`]]]
-[[errno_on_error][Sets `::errno` to `EDOM` and returns `std::numeric_limits<T>::infinity()`.]]
-[[ignore_error][Returns `std::numeric_limits<T>::infinity()`.]]
-[[user_error][Returns the result of `boost::math::policies::user_evaluation_error`:
- [link math_toolkit.policy.pol_tutorial.user_defined_error_policies
- this function must be defined by the user].]]
-]
-
-[heading Rationale]
-
-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:
-
-* Genuine errors should be flagged with exceptions
-rather than following C-compatible behaviour and setting ::errno.
-* Numeric underflow and denormalised results were not considered to be
-fatal errors in most cases, so it was felt that these should be ignored.
-
-[heading Finding More Information]
-
-There are some pre-processor macro defines that can be used to
-[link math_toolkit.policy.pol_ref.policy_defaults
-change the policy defaults]. See also the [link math_toolkit.policy
-policy section].
-
-An example is at the Policy tutorial in
-[link math_toolkit.policy.pol_tutorial.changing_policy_defaults
-Changing the Policy Defaults].
-
-Full source code of this typical example of passing a 'bad' argument
-(negative degrees of freedom) to Student's t distribution
-is [link math_toolkit.dist.stat_tut.weg.error_eg in the error handling example].
-
-The various kind of errors are described in more detail below.
-
-[heading [#domain_error]Domain Errors]
-
-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:
-
- boost::math::policies::raise_domain_error<T>(FunctionName, Message, Val, __Policy);
-
-Where
-`T` is the floating-point type passed to the function, `FunctionName` is the
-name of the function, `Message` is an error message describing the problem,
-Val is the value that was out of range, and __Policy is the current policy
-in use for the function that was called.
-
-The default policy behaviour of this function is to throw a
-std::domain_error C++ exception. But if the __Policy is to ignore
-the error, or set global ::errno, then a NaN will be returned.
-
-This behaviour is chosen to assist compatibility with the behaviour of
-['ISO/IEC 9899:1999 Programming languages - C]
-and with the
-[@www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Draft Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph 6]:
-
-[:['"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:]]
-
-[:['"the function description's Returns clause explicitly specifies a domain, and those arguments fall outside the specified domain; or]
-
-['"the corresponding mathematical function value has a non-zero imaginary component; or]
-
-['"the corresponding mathematical function is not mathematically defined.]]
-
-[:['"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."]]
-
-Note that in order to support information-rich error messages when throwing
-exceptions, `Message` must contain
-a __format recognised format specifier: the argument `Val` is inserted into
-the error message according to the specifier used.
-
-For example if `Message` contains a "%1%" then it is replaced by the value of
-`Val` to the full precision of T, where as "%.3g" would contain the value of
-`Val` to 3 digits. See the __format documentation for more details.
-
-[heading [#pole_error]Evaluation at a pole]
-
-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:
-
- boost::math::policies::raise_pole_error<T>(FunctionName, Message, Val, __Policy);
-
-Where
-`T` is the floating point type passed to the function, `FunctionName` is the
-name of the function, `Message` is an error message describing the problem,
-`Val` is the value of the argument that is at a pole, and __Policy is the
-current policy in use for the function that was called.
-
-The default behaviour of this function is to throw a std::domain_error exception.
-But __error_policy can be used to change this, for example to `ignore_error`
-and return NaN.
-
-Note that in order to support information-rich error messages when throwing
-exceptions, `Message` must contain
-a __format recognised format specifier: the argument `val` is inserted into
-the error message according to the specifier used.
-
-For example if `Message` contains a "%1%" then it is replaced by the value of
-`val` to the full precision of T, where as "%.3g" would contain the value of
-`val` to 3 digits. See the __format documentation for more details.
-
-[heading [#overflow_error]Numeric Overflow]
-
-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:
-
- boost::math::policies::raise_overflow_error<T>(FunctionName, Message, __Policy);
-
-Where
-`T` is the floating-point type passed to the function, `FunctionName` is the
-name of the function, `Message` is an error message describing the problem,
-and __Policy is the current policy
-in use for the function that was called.
-
-The default policy for this function is that `std::overflow_error`
-C++ exception is thrown. But if, for example, an `ignore_error` policy
-is used, then returns `std::numeric_limits<T>::infinity()`.
-In this situation if the type `T` doesn't support infinities,
-the maximum value for the type is returned.
-
-[heading [#underflow_error]Numeric Underflow]
-
-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:
-
- boost::math::policies::raise_underflow_error<T>(FunctionName, Message, __Policy);
-
-Where
-`T` is the floating point type passed to the function, `FunctionName` is the
-name of the function, `Message` is an error message describing the problem,
-and __Policy is the current policy
-in use for the called function.
-
-The default version of this function returns zero.
-But with another policy, like `throw_on_error`,
-throws an `std::underflow_error` C++ exception.
-
-[heading [#denorm_error]Denormalisation Errors]
-
-If the result of a special function is a denormalised value /z/ then the function
-returns the result of:
-
- boost::math::policies::raise_denorm_error<T>(z, FunctionName, Message, __Policy);
-
-Where
-`T` is the floating point type passed to the function, `FunctionName` is the
-name of the function, `Message` is an error message describing the problem,
-and __Policy is the current policy
-in use for the called function.
-
-The default version of this function returns /z/.
-But with another policy, like `throw_on_error`
-throws an `std::underflow_error` C++ exception.
-
-[heading [#evaluation_error]Evaluation Errors]
-
-When a special function calculates a result that is known to be erroneous,
-or where the result is incalculable then it calls:
-
- boost::math::policies::raise_evaluation_error<T>(FunctionName, Message, Val, __Policy);
-
-Where
-`T` is the floating point type passed to the function, `FunctionName` is the
-name of the function, `Message` is an error message describing the problem,
-`Val` is the erroneous value,
-and __Policy is the current policy
-in use for the called function.
-
-The default behaviour of this function is to throw a `boost::math::evaluation_error`.
-
-Note that in order to support information rich error messages when throwing
-exceptions, `Message` must contain
-a __format recognised format specifier: the argument `val` is inserted into
-the error message according to the specifier used.
-
-For example if `Message` contains a "%1%" then it is replaced by the value of
-`val` to the full precision of T, where as "%.3g" would contain the value of
-`val` to 3 digits. See the __format documentation for more details.
-
-[heading [#checked_narrowing_cast]Errors from typecasts]
-
-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:
-
- template <class T, class __Policy, class U>
- T checked_narrowing_cast(U const& val, const char* function);
-
-Is used to perform these conversions, and will call the error handlers
-listed above on [link overflow_error overflow],
-[link underflow_error underflow] or [link denorm_error denormalisation].
-
-[endsect][/section:error_handling Error Handling]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/factorials.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/factorials.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,301 +0,0 @@
-[section:factorials Factorials and Binomial Coefficients]
-
-[section:sf_factorial Factorial]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/factorials.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- T factorial(unsigned i);
-
- template <class T, class ``__Policy``>
- T factorial(unsigned i, const ``__Policy``&);
-
- template <class T>
- T unchecked_factorial(unsigned i);
-
- template <class T>
- struct max_factorial;
-
- }} // namespaces
-
-[h4 Description]
-
- template <class T>
- T factorial(unsigned i);
-
- template <class T, class ``__Policy``>
- T factorial(unsigned i, const ``__Policy``&);
-
-Returns [^i!].
-
-[optional_policy]
-
-For [^i <= max_factorial<T>::value] this is implemented by table lookup,
-for larger values of [^i], this function is implemented in terms of __tgamma.
-
-If [^i] is so large that the result can not be represented in type T, then
-calls __overflow_error.
-
- template <class T>
- T unchecked_factorial(unsigned i);
-
-Returns [^i!].
-
-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 [^i <= max_factorial<T>::value]. This function is intended to be used
-inside inner loops that require fast table lookup of factorials, but requires
-care to ensure that argument [^i] never grows too large.
-
- template <class T>
- struct max_factorial
- {
- static const unsigned value = X;
- };
-
-This traits class defines the largest value that can be passed to
-[^unchecked_factorial]. The member `value` can be used where integral
-constant expressions are required: for example to define the size of
-further tables that depend on the factorials.
-
-[h4 Accuracy]
-
-For arguments smaller than `max_factorial<T>::value`
-the result should be
-correctly rounded. For larger arguments the accuracy will be the same
-as for __tgamma.
-
-[h4 Testing]
-
-Basic sanity checks and spot values to verify the data tables:
-the main tests for the __tgamma function handle those cases already.
-
-[h4 Implementation]
-
-The factorial function is table driven for small arguments, and is
-implemented in terms of __tgamma for larger arguments.
-
-[endsect]
-
-[section:sf_double_factorial Double Factorial]
-
-``
-#include <boost/math/special_functions/factorials.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- T double_factorial(unsigned i);
-
- template <class T, class ``__Policy``>
- T double_factorial(unsigned i, const ``__Policy``&);
-
- }} // namespaces
-
-Returns [^i!!].
-
-[optional_policy]
-
-May return the result of __overflow_error if the result is too large
-to represent in type T. The implementation is designed to be optimised
-for small /i/ where table lookup of i! is possible.
-
-[h4 Accuracy]
-
-The implementation uses a trivial adaptation of
-the factorial function, so error rates should be no more than a couple
-of epsilon higher.
-
-[h4 Testing]
-
-The spot tests for the double factorial use data
-generated by functions.wolfram.com.
-
-[h4 Implementation]
-
-The double factorial is implemented in terms of the factorial and gamma
-functions using the relations:
-
-(2n)!! = 2[super n ] * n!
-
-(2n+1)!! = (2n+1)! / (2[super n ] n!)
-
-and
-
-(2n-1)!! = [Gamma]((2n+1)/2) * 2[super n ] / sqrt(pi)
-
-[endsect]
-
-[section:sf_rising_factorial Rising Factorial]
-
-``
-#include <boost/math/special_functions/factorials.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` rising_factorial(T x, int i);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` rising_factorial(T x, int i, const ``__Policy``&);
-
- }} // namespaces
-
-Returns the rising factorial of /x/ and /i/:
-
-rising_factorial(x, i) = [Gamma](x + i) / [Gamma](x);
-
-or
-
-rising_factorial(x, i) = x(x+1)(x+2)(x+3)...(x+i)
-
-Note that both /x/ and /i/ can be negative as well as positive.
-
-[optional_policy]
-
-May return the result of __overflow_error if the result is too large
-to represent in type T.
-
-The return type of these functions is computed using the __arg_pomotion_rules:
-the type of the result is `double` if T is an integer type, otherwise the type
-of the result is T.
-
-[h4 Accuracy]
-
-The accuracy will be the same as
-the __tgamma_delta_ratio function.
-
-[h4 Testing]
-
-The spot tests for the rising factorials use data generated
-by functions.wolfram.com.
-
-[h4 Implementation]
-
-Rising and falling factorials are implemented as ratios of gamma functions
-using __tgamma_delta_ratio. Optimisations for
-small integer arguments are handled internally by that function.
-
-[endsect]
-
-[section:sf_falling_factorial Falling Factorial]
-
-``
-#include <boost/math/special_functions/factorials.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` falling_factorial(T x, unsigned i);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` falling_factorial(T x, unsigned i, const ``__Policy``&);
-
- }} // namespaces
-
-Returns the falling factorial of /x/ and /i/:
-
-falling_factorial(x, i) = x(x-1)(x-2)(x-3)...(x-i+1)
-
-Note that this function is only defined for positive /i/, hence the
-`unsigned` second argument. Argument /x/ can be either positive or
-negative however.
-
-[optional_policy]
-
-May return the result of __overflow_error if the result is too large
-to represent in type T.
-
-The return type of these functions is computed using the __arg_pomotion_rules:
-the type of the result is `double` if T is an integer type, otherwise the type
-of the result is T.
-
-[h4 Accuracy]
-
-The accuracy will be the same as
-the __tgamma_delta_ratio function.
-
-[h4 Testing]
-
-The spot tests for the falling factorials use data generated by
-functions.wolfram.com.
-
-[h4 Implementation]
-
-Rising and falling factorials are implemented as ratios of gamma functions
-using __tgamma_delta_ratio. Optimisations for
-small integer arguments are handled internally by that function.
-
-[endsect]
-
-[section:sf_binomial Binomial Coefficients]
-
-``
-#include <boost/math/special_functions/binomial.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- T binomial_coefficient(unsigned n, unsigned k);
-
- template <class T, class ``__Policy``>
- T binomial_coefficient(unsigned n, unsigned k, const ``__Policy``&);
-
- }} // namespaces
-
-Returns the binomial coefficient: [sub n]C[sub k].
-
-Requires k <= n.
-
-[optional_policy]
-
-May return the result of __overflow_error if the result is too large
-to represent in type T.
-
-[h4 Accuracy]
-
-The accuracy will be the same as for the
-factorials for small arguments (i.e. no more than one or two epsilon),
-and the __beta function for larger arguments.
-
-[h4 Testing]
-
-The spot tests for the binomial coefficients use data
-generated by functions.wolfram.com.
-
-[h4 Implementation]
-
-Binomial coefficients are calculated using table lookup of factorials
-where possible using:
-
-[sub n]C[sub k] = n! / (k!(n-k)!)
-
-Otherwise it is implemented in terms of the beta function using the relations:
-
-[sub n]C[sub k] = 1 / (k * __beta(k, n-k+1))
-
-and
-
-[sub n]C[sub k] = 1 / ((n-k) * __beta(k+1, n-k))
-
-[endsect]
-
-
-[endsect][/section:factorials Factorials]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/fpclassify.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/fpclassify.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,99 +0,0 @@
-[section:fpclass Floating Point Classification: Infinities and NaN's]
-
-[h4 Synopsis]
-
- #define FP_ZERO /* implementation specific value */
- #define FP_NORMAL /* implementation specific value */
- #define FP_INFINITE /* implementation specific value */
- #define FP_NAN /* implementation specific value */
- #define FP_SUBNORMAL /* implementation specific value */
-
- template <class T>
- int fpclassify(T t);
-
- template <class T>
- bool isfinite(T z);
-
- template <class T>
- bool isinf(T t);
-
- template <class T>
- bool isnan(T t);
-
- template <class T>
- bool isnormal(T t);
-
-[h4 Description]
-
-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.
-
-Note that the definition of these functions ['does not suppress the definition
-of these names as macros by math.h] on those platforms that already provide
-these as macros. That mean that the following have differing meanings:
-
- using namespace boost::math;
-
- // This might call a global macro if defined,
- // but might not work if the type of z is unsupported
- // by the std lib macro:
- isnan(z);
- //
- // This calls the Boost version
- // (found via the "using namespace boost::math" declaration)
- // it works for any type that has numeric_limits support for type z:
- (isnan)(z);
- //
- // As above but with namespace qualification.
- (boost::math::isnan)(z);
- //
- // This will cause a compiler error is isnan is a native macro:
- boost::math::isnan(z);
- // So always use (boost::math::isnan)(z); instead.
-
-Detailed descriptions for each of these functions follows:
-
- template <class T>
- int fpclassify(T t);
-
-Returns an integer value that classifies the value /t/:
-
-[table
-[[fpclassify value] [class of t.]]
-[[FP_ZERO] [If /t/ is zero.]]
-[[FP_NORMAL] [If /t/ is a non-zero, non-denormalised finite value.]]
-[[FP_INFINITE] [If /t/ is plus or minus infinity.]]
-[[FP_NAN] [If /t/ is a NaN.]]
-[[FP_SUBNORMAL] [If /t/ is a denormalised number.]]
-]
-
- template <class T>
- bool isfinite(T z);
-
-Returns true only if /z/ is not an infinity or a NaN.
-
- template <class T>
- bool isinf(T t);
-
-Returns true only if /z/ is plus or minus infinity.
-
- template <class T>
- bool isnan(T t);
-
-Returns true only if /z/ is a NaN.
-
- template <class T>
- bool isnormal(T t);
-
-Returns true only if /z/ is a normal number (not zero, infinite, NaN, or denormalised).
-
-[endsect] [/section:fpclass Floating Point Classification: Infinities and NaN's]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/fraction.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/fraction.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,157 +0,0 @@
-[section:cf Continued Fraction Evaluation]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/tools/fraction.hpp>
-``
-
- namespace boost{ namespace math{ namespace tools{
-
- template <class Gen>
- typename detail::fraction_traits<Gen>::result_type
- continued_fraction_b(Gen& g, int bits);
-
- template <class Gen>
- typename detail::fraction_traits<Gen>::result_type
- continued_fraction_b(Gen& g, int bits, boost::uintmax_t& max_terms);
-
- template <class Gen>
- typename detail::fraction_traits<Gen>::result_type
- continued_fraction_a(Gen& g, int bits);
-
- template <class Gen>
- typename detail::fraction_traits<Gen>::result_type
- continued_fraction_a(Gen& g, int bits, boost::uintmax_t& max_terms);
-
- }}} // namespaces
-
-[h4 Description]
-
-[@http://en.wikipedia.org/wiki/Continued_fraction Continued fractions are a common method of approximation. ]
-These functions all evaluate the continued fraction described by the /generator/
-type argument. The functions with an "_a" suffix evaluate the fraction:
-
-[equation fraction2]
-
-and those with a "_b" suffix evaluate the fraction:
-
-[equation fraction1]
-
-This latter form is somewhat more natural in that it corresponds with the usual
-definition of a continued fraction, but note that the first /a/ value returned by
-the generator is discarded. Further, often the first /a/ and /b/ values in a
-continued fraction have different defining equations to the remaining terms, which
-may make the "_a" suffixed form more appropriate.
-
-The generator type should be a function object which supports the following
-operations:
-
-[table
-[[Expression] [Description]]
-[[Gen::result_type] [The type that is the result of invoking operator().
- This can be either an arithmetic type, or a std::pair<> of arithmetic types.]]
-[[g()] [Returns an object of type Gen::result_type.
-
-Each time this operator is called then the next pair of /a/ and /b/
- values is returned. Or, if result_type is an arithmetic type,
- then the next /b/ value is returned and all the /a/ values
- are assumed to 1.]]
-]
-
-In all the continued fraction evaluation functions the /bits/ parameter is the
-number of bits precision desired in the result, evaluation of the fraction will
-continue until the last term evaluated leaves the first /bits/ bits in the result
-unchanged.
-
-If the optional /max_terms/ parameter is specified then no more than /max_terms/
-calls to the generator will be made, and on output,
-/max_terms/ will be set to actual number of
-calls made. This facility is particularly useful when profiling a continued
-fraction for convergence.
-
-[h4 Implementation]
-
-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.
-
-[h4 Examples]
-
-The [@http://en.wikipedia.org/wiki/Golden_ratio golden ratio phi = 1.618033989...]
-can be computed from the simplest continued fraction of all:
-
-[equation fraction3]
-
-We begin by defining a generator function:
-
- template <class T>
- struct golden_ratio_fraction
- {
- typedef T result_type;
-
- result_type operator()
- {
- return 1;
- }
- };
-
-The golden ratio can then be computed to double precision using:
-
- continued_fraction_a(
- golden_ratio_fraction<double>(),
- std::numeric_limits<double>::digits);
-
-It's more usual though to have to define both the /a/'s and the /b/'s
-when evaluating special functions by continued fractions, for example
-the tan function is defined by:
-
-[equation fraction4]
-
-So it's generator object would look like:
-
- template <class T>
- struct tan_fraction
- {
- private:
- T a, b;
- public:
- tan_fraction(T v)
- : a(-v*v), b(-1)
- {}
-
- typedef std::pair<T,T> result_type;
-
- std::pair<T,T> operator()()
- {
- b += 2;
- return std::make_pair(a, b);
- }
- };
-
-Notice that if the continuant is subtracted from the /b/ terms,
-as is the case here, then all the /a/ terms returned by the generator
-will be negative. The tangent function can now be evaluated using:
-
- template <class T>
- T tan(T a)
- {
- tan_fraction<T> fract(a);
- return a / continued_fraction_b(fract, std::numeric_limits<T>::digits);
- }
-
-Notice that this time we're using the "_b" suffixed version to evaluate
-the fraction: we're removing the leading /a/ term during fraction evaluation
-as it's different from all the others.
-
-[endsect][/section:cf Continued Fraction Evaluation]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/gamma_derivatives.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/gamma_derivatives.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,54 +0,0 @@
-[section:gamma_derivatives Derivative of the Incomplete Gamma Function]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/gamma.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2>
- ``__sf_result`` gamma_p_derivative(T1 a, T2 x);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_p_derivative(T1 a, T2 x, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-This function find some uses in statistical distributions: it
-implements the partial derivative with respect to /x/ of the incomplete
-gamma function.
-
-[equation derivative1]
-
-[optional_policy]
-
-Note that the derivative of the function __gamma_q can be obtained by negating
-the result of this function.
-
-The return type of this function is computed using the __arg_pomotion_rules
-when T1 and T2 are different types, otherwise the return type is simply T1.
-
-[h4 Accuracy]
-
-Almost identical to the incomplete gamma function __gamma_p: refer to
-the documentation for that function for more information.
-
-[h4 Implementation]
-
-This function just expose some of the internals of the incomplete
-gamma function __gamma_p: refer to the documentation for that function
-for more information.
-
-[endsect][/section Derivative of the Incomplete Gamma Functions]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/gamma_ratios.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/gamma_ratios.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,112 +0,0 @@
-[section:gamma_ratios Ratios of Gamma Functions]
-
-``
-#include <boost/math/special_functions/gamma.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2>
- ``__sf_result`` tgamma_ratio(T1 a, T2 b);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` tgamma_ratio(T1 a, T2 b, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` tgamma_delta_ratio(T1 a, T2 delta);
-
- template <class T1, class T2, class Policy>
- ``__sf_result`` tgamma_delta_ratio(T1 a, T2 delta, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
- template <class T1, class T2>
- ``__sf_result`` tgamma_ratio(T1 a, T2 b);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` tgamma_ratio(T1 a, T2 b, const ``__Policy``&);
-
-Returns the ratio of gamma functions:
-
-[equation gamma_ratio0]
-
-[optional_policy]
-
-Internally this just calls `tgamma_delta_ratio(a, b-a)`.
-
- template <class T1, class T2>
- ``__sf_result`` tgamma_delta_ratio(T1 a, T2 delta);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` tgamma_delta_ratio(T1 a, T2 delta, const ``__Policy``&);
-
-Returns the ratio of gamma functions:
-
-[equation gamma_ratio1]
-
-[optional_policy]
-
-Note that the result is calculated accurately even when /delta/ is
-small compared to /a/: indeed even if /a+delta ~ a/. The function is
-typically used when /a/ is large and /delta/ is very small.
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types, otherwise the result type is simple T1.
-
-[h4 Accuracy]
-
-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 __zero_error.
-
-[table Errors In the Function tgamma_delta_ratio(a, delta)
-[[Significand Size] [Platform and Compiler] [20 < a < 80
-
-and
-
-delta < 1]]
-[[53] [Win32, Visual C++ 8] [Peak=16.9 Mean=1.7] ]
-[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=24 Mean=2.7]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=12.8 Mean=1.8]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=21.4 Mean=2.3] ]
-]
-
-[table Errors In the Function tgamma_ratio(a, b)
-[[Significand Size] [Platform and Compiler] [6 < a,b < 50]]
-[[53] [Win32, Visual C++ 8] [Peak=34 Mean=9] ]
-[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=91 Mean=23]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=35.6 Mean=9.3]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=43.9 Mean=13.2] ]
-]
-
-[h4 Testing]
-
-Accuracy tests use data generated at very high precision
-(with [@http://shoup.net/ntl/doc/RR.txt NTL RR class]
-set at 1000-bit precision: about 300 decimal digits)
-and a deliberately naive calculation of [Gamma](x)/[Gamma](y).
-
-[h4 Implementation]
-
-The implementation of these functions is very similar to that of
-__beta, and is based on combining similar power terms
-to improve accuracy and avoid spurious overflow/underflow.
-
-In addition there are optimisations for the situation where /delta/
-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.
-
-[endsect][/section:gamma_ratios Ratios of Gamma Functions]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/hermite.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/hermite.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,115 +0,0 @@
-[section:hermite Hermite Polynomials]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/hermite.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` hermite(unsigned n, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` hermite(unsigned n, T x, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
-
- }} // namespaces
-
-[h4 Description]
-
-The return type of these functions is computed using the __arg_pomotion_rules:
-note than when there is a single template argument the result is the same type
-as that argument or `double` if the template argument is an integer type.
-
- template <class T>
- ``__sf_result`` hermite(unsigned n, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` hermite(unsigned n, T x, const ``__Policy``&);
-
-Returns the value of the Hermite Polynomial of order /n/ at point /x/:
-
-[equation hermite_0]
-
-[optional_policy]
-
-The following graph illustrates the behaviour of the first few
-Hermite Polynomials:
-
-[$../graphs/hermite.png]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
-
-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 /x/, and for rising /n/.
-
-[equation hermite_1]
-
-For example we could produce a vector of the first 10 polynomial
-values using:
-
- double x = 0.5; // Abscissa value
- vector<double> v;
- v.push_back(hermite(0, x)).push_back(hermite(1, x));
- for(unsigned l = 1; l < 10; ++l)
- v.push_back(hermite_next(l, x, v[l], v[l-1]));
-
-Formally the arguments are:
-
-[variablelist
-[[n][The degree /n/ of the last polynomial calculated.]]
-[[x][The abscissa value]]
-[[Hn][The value of the polynomial evaluated at degree /n/.]]
-[[Hnm1][The value of the polynomial evaluated at degree /n-1/.]]
-]
-
-[h4 Accuracy]
-
-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 __zero_error.
-
-[table Peak Errors In the Hermite Polynomial
-[[Significand Size] [Platform and Compiler] [Errors in range
-
-0 < l < 20] ]
-[[53] [Win32, Visual C++ 8] [Peak=4.5 Mean=1.5] ]
-[[64] [Red Hat Linux IA32, g++ 4.1] [Peak=6 Mean=2]]
-[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=6 Mean=2] ]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=6 Mean=4]]
-]
-
-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.
-
-[h4 Testing]
-
-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
-[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision.
-
-[h4 Implementation]
-
-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.
-
-[endsect][/section:beta_function The Beta Function]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/html4_symbols.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/html4_symbols.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,148 +0,0 @@
-[/ Symbols and Greek letters (about 120) from HTML4 ]
-[/ File HTML4_symbols.qbk]
-[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html]
-[/ All (except 2 angle brackets) show OK on Firefox 2.0]
-
-[/ See also Latin-1 aka Western (ISO-8859-1) in latin1_symbols.qbk]
-[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html]
-
-[/ Also some miscellaneous math charaters added to this list - see the end.]
-
-[/ To use, enclose the template name in square brackets.]
-
-[template fnof[]'''&#x192;'''] [/ ƒ Latin small f with hook = function = florin]
-[template Alpha[]'''&#x391;'''] [/ ? Greek capital letter alpha]
-[template Beta[]'''&#x392;'''] [/ ? Greek capital letter beta]
-[template Gamma[]'''&#x393;'''] [/ G Greek capital letter gamma]
-[template Delta[]'''&#x394;'''] [/ ? Greek capital letter delta]
-[template Epsilon[]'''&#x395;'''] [/ ? Greek capital letter epsilon]
-[template Zeta[]'''&#x396;'''] [/ ? Greek capital letter zeta]
-[template Eta[]'''&#x397;'''] [/ ? Greek capital letter eta]
-[template Theta[]'''&#x398;'''] [/ T Greek capital letter theta]
-[template Iota[]'''&#x399;'''] [/ ? Greek capital letter iota]
-[template Kappa[]'''&#x39A;'''] [/ ? Greek capital letter kappa]
-[template Lambda[]'''&#x39B;'''] [/ ? Greek capital letter lambda]
-[template Mu[]'''&#x39C;'''] [/ ? Greek capital letter mu]
-[template Nu[]'''&#x39D;'''] [/ ? Greek capital letter nu]
-[template Xi[]'''&#x39E;'''] [/ ? Greek capital letter xi]
-[template Omicron[]'''&#x39F;'''] [/ ? Greek capital letter omicron]
-[template Pi[]'''&#x3A0;'''] [/ ? Greek capital letter pi]
-[template Rho[]'''&#x3A1;'''] [/ ? Greek capital letter rho]
-[template Sigma[]'''&#x3A3;'''] [/ S Greek capital letter sigma]
-[template Tau[]'''&#x3A4;'''] [/ ? Greek capital letter tau]
-[template Upsilon[]'''&#x3A5;'''] [/ ? Greek capital letter upsilon]
-[template Phi[]'''&#x3A6;'''] [/ F Greek capital letter phi]
-[template Chi[]'''&#x3A7;'''] [/ ? Greek capital letter chi]
-[template Psi[]'''&#x3A8;'''] [/ ? Greek capital letter psi]
-[template Omega[]'''&#x3A9;'''] [/ O Greek capital letter omega]
-[template alpha[]'''&#x3B1;'''] [/ a Greek small letter alpha]
-[template beta[]'''&#x3B2;'''] [/ ß Greek small letter beta]
-[template gamma[]'''&#x3B3;'''] [/ ? Greek small letter gamma]
-[template delta[]'''&#x3B4;'''] [/ d Greek small letter delta]
-[template epsilon[]'''&#x3B5;'''] [/ e Greek small letter epsilon]
-[template zeta[]'''&#x3B6;'''] [/ ? Greek small letter zeta]
-[template eta[]'''&#x3B7;'''] [/ ? Greek small letter eta]
-[template theta[]'''&#x3B8;'''] [/ ? Greek small letter theta]
-[template iota[]'''&#x3B9;'''] [/ ? Greek small letter iota]
-[template kappa[]'''&#x3BA;'''] [/ ? Greek small letter kappa]
-[template lambda[]'''&#x3BB;'''] [/ ? Greek small letter lambda]
-[template mu[]'''&#x3BC;'''] [/ µ Greek small letter mu]
-[template nu[]'''&#x3BD;'''] [/ ? Greek small letter nu]
-[template xi[]'''&#x3BE;'''] [/ ? Greek small letter xi]
-[template omicron[]'''&#x3BF;'''] [/ ? Greek small letter omicron]
-[template pi[]'''&#x3C0;'''] [/ p Greek small letter pi]
-[template rho[]'''&#x3C1;'''] [/ ? Greek small letter rho]
-[template sigmaf[]'''&#x3C2;'''] [/ ? Greek small letter final sigma]
-[template sigma[]'''&#x3C3;'''] [/ s Greek small letter sigma]
-[template tau[]'''&#x3C4;'''] [/ t Greek small letter tau]
-[template upsilon[]'''&#x3C5;'''] [/ ? Greek small letter upsilon]
-[template phi[]'''&#x3C6;'''] [/ f Greek small letter phi]
-[template chi[]'''&#x3C7;'''] [/ ? Greek small letter chi]
-[template psi[]'''&#x3C8;'''] [/ ? Greek small letter psi]
-[template omega[]'''&#x3C9;'''] [/ ? Greek small letter omega]
-[template thetasym[]'''&#x3D1;'''] [/ ? Greek small letter theta symbol]
-[template upsih[]'''&#x3D2;'''] [/ ? Greek upsilon with hook symbol]
-[template piv[]'''&#x3D6;'''] [/ ? Greek pi symbol]
-[template bull[]'''&#x2022;'''] [/ • bullet = black small circle]
-[template hellip[]'''&#x2026;'''] [/ … horizontal ellipsis = three dot leader]
-[template prime[]'''&#x2032;'''] [/ ' prime = minutes = feet]
-[template Prime[]'''&#x2033;'''] [/ ? double prime = seconds = inches]
-[template oline[]'''&#x203E;'''] [/ ? overline = spacing overscore]
-[template frasl[]'''&#x2044;'''] [/ / fraction slash]
-[template weierp[]'''&#x2118;'''] [/ P script capital P = power set = Weierstrass p]
-[template image[]'''&#x2111;'''] [/ I blackletter capital I = imaginary part]
-[template real[]'''&#x211C;'''] [/ R blackletter capital R = real part symbol]
-[template trade[]'''&#x2122;'''] [/ ™ trade mark sign]
-[template alefsym[]'''&#x2135;'''] [/ ? alef symbol = first transfinite cardinal]
-[template larr[]'''&#x2190;'''] [/ ? leftwards arrow]
-[template uarr[]'''&#x2191;'''] [/ ? upwards arrow]
-[template rarr[]'''&#x2192;'''] [/ ? rightwards arrow]
-[template darr[]'''&#x2193;'''] [/ ? downwards arrow]
-[template harr[]'''&#x2194;'''] [/ ? left right arrow]
-[template crarr[]'''&#x21B5;'''] [/ ? downwards arrow with corner leftwards = CR]
-[template lArr[]'''&#x21D0;'''] [/ ? leftwards double arrow]
-[template uArr[]'''&#x21D1;'''] [/ ? upwards double arrow]
-[template rArr[]'''&#x21D2;'''] [/ ? rightwards double arrow]
-[template dArr[]'''&#x21D3;'''] [/ ? downwards double arrow]
-[template hArr[]'''&#x21D4;'''] [/ ? left right double arrow]
-[template forall[]'''&#x2200;'''] [/ ? for all]
-[template part[]'''&#x2202;'''] [/ ? partial differential]
-[template exist[]'''&#x2203;'''] [/ ? there exists]
-[template empty[]'''&#x2205;'''] [/ Ø empty set = null set = diameter]
-[template nabla[]'''&#x2207;'''] [/ ? nabla = backward difference]
-[template isin[]'''&#x2208;'''] [/ ? element of]
-[template notin[]'''&#x2209;'''] [/ ? not an element of]
-[template ni[]'''&#x220B;'''] [/ ? contains as member]
-[template prod[]'''&#x220F;'''] [/ ? n-ary product = product sign]
-[template sum[]'''&#x2211;'''] [/ ? n-ary sumation]
-[template minus[]'''&#x2212;'''] [/ - minus sign]
-[template lowast[]'''&#x2217;'''] [/ * asterisk operator]
-[template radic[]'''&#x221A;'''] [/ v square root = radical sign]
-[template prop[]'''&#x221D;'''] [/ ? proportional to]
-[template infin[]'''&#x221E;'''] [/ 8 infinity]
-[template ang[]'''&#x2220;'''] [/ ? angle]
-[template and[]'''&#x2227;'''] [/ ? logical and = wedge]
-[template or[]'''&#x2228;'''] [/ ? logical or = vee]
-[template cap[]'''&#x2229;'''] [/ n intersection = cap]
-[template cup[]'''&#x222A;'''] [/ ? union = cup]
-[template int[]'''&#x222B;'''] [/ ? integral]
-[template there4[]'''&#x2234;'''] [/ ? therefore]
-[template sim[]'''&#x223C;'''] [/ ~ tilde operator = varies with = similar to]
-[template cong[]'''&#x2245;'''] [/ ? approximately equal to]
-[template asymp[]'''&#x2248;'''] [/ ˜ almost equal to = asymptotic to]
-[template ne[]'''&#x2260;'''] [/ ? not equal to]
-[template equiv[]'''&#x2261;'''] [/ = identical to]
-[template le[]'''&#x2264;'''] [/ = less-than or equal to]
-[template ge[]'''&#x2265;'''] [/ = greater-than or equal to]
-[template subset[]'''&#x2282;'''] [/ ? subset of]
-[template superset[]'''&#x2283;'''] [/ ? superset of]
-[template nsubset[]'''&#x2284;'''] [/ ? not a subset of]
-[template sube[]'''&#x2286;'''] [/ ? subset of or equal to]
-[template supe[]'''&#x2287;'''] [/ ? superset of or equal to]
-[template oplus[]'''&#x2295;'''] [/ ? circled plus = direct sum]
-[template otimes[]'''&#x2297;'''] [/ ? circled times = vector product]
-[template perp[]'''&#x22A5;'''] [/ ? up tack = orthogonal to = perpendicular]
-[template sdot[]'''&#x22C5;'''] [/ · dot operator]
-[template lceil[]'''&#x2308;'''] [/ ? left ceiling = APL upstile]
-[template rceil[]'''&#x2309;'''] [/ ? right ceiling]
-[template lfloor[]'''&#x230A;'''] [/ ? left floor = APL downstile]
-[template rfloor[]'''&#x230B;'''] [/ ? right floor]
-[template lang[]'''&#x2329;'''] [/ < left-pointing angle bracket = bra (Firefox shows ?)]
-[template rang[]'''&#x232A;'''] [/ > right-pointing angle bracket = ket (Firefox shows ?)]
-[template loz[]'''&#x25CA;'''] [/ ? lozenge]
-[template spades[]'''&#x2660;'''] [/ ? black spade suit]
-[template clubs[]'''&#x2663;'''] [/ ? black club suit = shamrock]
-[template hearts[]'''&#x2665;'''] [/ ? black heart suit = valentine]
-[template diams[]'''&#x2666;'''] [/ ? black diamond suit]
-
-[/ Other symbols, not in the HTML4 list:]
-[template space[]''' ''']
-[template plusminus[]'''&#x00B1;'''] [/ ? plus or minus sign]
-
-[/
-Copyright 2007 Paul A. Bristow.
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/ibeta.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/ibeta.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,294 +0,0 @@
-[section:ibeta_function Incomplete Beta Functions]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/gamma.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta(T1 a, T2 b, T3 x, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibetac(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibetac(T1 a, T2 b, T3 x, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` beta(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` beta(T1 a, T2 b, T3 x, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` betac(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` betac(T1 a, T2 b, T3 x, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-There are four [@http://en.wikipedia.org/wiki/Incomplete_beta_function incomplete beta functions]
-: two are normalised versions (also known as ['regularized] beta functions)
-that return values in the range [0, 1], and two are non-normalised and
-return values in the range [0, __beta(a, b)]. Users interested in statistical
-applications should use the normalised (or
-[@http://mathworld.wolfram.com/RegularizedBetaFunction.html regularized]
-) versions (ibeta and ibetac).
-
-All of these functions require /a > 0/, /b > 0/ and /0 <= x <= 1/.
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1, T2 and T3 are different types.
-
-[optional_policy]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta(T1 a, T2 b, T3 x, const ``__Policy``&);
-
-Returns the normalised incomplete beta function of a, b and x:
-
-[equation ibeta3]
-
-[$../graphs/ibeta.png]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibetac(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibetac(T1 a, T2 b, T3 x, const ``__Policy``&);
-
-Returns the normalised complement of the incomplete beta function of a, b and x:
-
-[equation ibeta4]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` beta(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` beta(T1 a, T2 b, T3 x, const ``__Policy``&);
-
-Returns the full (non-normalised) incomplete beta function of a, b and x:
-
-[equation ibeta1]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` betac(T1 a, T2 b, T3 x);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` betac(T1 a, T2 b, T3 x, const ``__Policy``&);
-
-Returns the full (non-normalised) complement of the incomplete beta function of a, b and x:
-
-[equation ibeta2]
-
-[h4 Accuracy]
-
-The following tables give peak and mean relative errors in over various domains of
-a, b and x, along with comparisons to the __gsl and __cephes libraries.
-Note that only results for the widest floating-point type on the system are given as
-narrower types have __zero_error.
-
-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.
-
-[table Errors In the Function ibeta(a,b,x)
-[[Significand Size] [Platform and Compiler] [0 < a,b < 10
-
-and
-
-0 < x < 1] [0 < a,b < 100
-
-and
-
-0 < x < 1][1x10[super -5] < a,b < 1x10[super 5]
-
-and
-
-0 < x < 1]]
-[[53] [Win32, Visual C++ 8]
- [Peak=42.3 Mean=2.9
-
-(GSL Peak=682 Mean=32.5)
-
-(__cephes Peak=42.7 Mean=7.0)]
- [Peak=108 Mean=16.6
-
-(GSL Peak=690 Mean=151)
-
-(__cephes Peak=1545 Mean=218)]
- [Peak=4x10[super 3][space] Mean=203
-
-(GSL Peak~3x10[super 5][space] Mean~2x10[super 4][space])
-
-(__cephes Peak~5x10[super 5][space] Mean~2x10[super 4][space])]]
-[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=21.9 Mean=3.1]
- [Peak=270.7 Mean=26.8] [Peak~5x10[super 4][space] Mean=3x10[super 3][space] ]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=15.4 Mean=3.0] [Peak=112.9 Mean=14.3]
- [Peak~5x10[super 4][space] Mean=3x10[super 3][space]]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=20.9 Mean=2.6] [Peak=88.1 Mean=14.3]
- [Peak~2x10[super 4][space] Mean=1x10[super 3][space] ]]
-]
-
-[table Errors In the Function ibetac(a,b,x)
-[[Significand Size] [Platform and Compiler] [0 < a,b < 10
-
-and
-
-0 < x < 1] [0 < a,b < 100
-
-and
-
-0 < x < 1][1x10[super -5] < a,b < 1x10[super 5]
-
-and
-
-0 < x < 1]]
-[[53] [Win32, Visual C++ 8] [Peak=13.9 Mean=2.0]
- [Peak=56.2 Mean=14] [Peak=3x10[super 3][space] Mean=159]]
-[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=21.1 Mean=3.6]
- [Peak=221.7 Mean=25.8]
- [Peak~9x10[super 4][space] Mean=3x10[super 3][space] ]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=10.6 Mean=2.2]
- [Peak=73.9 Mean=11.9]
- [Peak~9x10[super 4][space] Mean=3x10[super 3][space] ]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=9.9 Mean=2.6]
- [Peak=117.7 Mean=15.1]
- [Peak~3x10[super 4][space] Mean=1x10[super 3][space] ]]
-]
-
-[table Errors In the Function beta(a, b, x)
-[[Significand Size] [Platform and Compiler] [0 < a,b < 10
-
-and
-
-0 < x < 1] [0 < a,b < 100
-
-and
-
-0 < x < 1][1x10[super -5] < a,b < 1x10[super 5]
-
-and
-
-0 < x < 1]]
-[[53] [Win32, Visual C++ 8] [Peak=39 Mean=2.9] [Peak=91 Mean=12.7] [Peak=635 Mean=25]]
-[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=26 Mean=3.6] [Peak=180.7 Mean=30.1] [Peak~7x10[super 4][space] Mean=3x10[super 3][space] ]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=13 Mean=2.4] [Peak=67.1 Mean=13.4] [Peak~7x10[super 4][space] Mean=3x10[super 3][space] ]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=27.3 Mean=3.6] [Peak=49.8 Mean=9.1] [Peak~6x10[super 4][space] Mean=3x10[super 3][space] ]]
-]
-
-[table Errors In the Function betac(a,b,x)
-[[Significand Size] [Platform and Compiler] [0 < a,b < 10
-
-and
-
-0 < x < 1] [0 < a,b < 100
-
-and
-
-0 < x < 1][1x10[super -5] < a,b < 1x10[super 5]
-
-and
-
-0 < x < 1]]
-[[53] [Win32, Visual C++ 8] [Peak=12.0 Mean=2.4] [Peak=91 Mean=15] [Peak=4x10[super 3][space] Mean=113]]
-[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=19.8 Mean=3.8] [Peak=295.1 Mean=33.9] [Peak~1x10[super 5][space] Mean=5x10[super 3][space] ]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=11.2 Mean=2.4] [Peak=63.5 Mean=13.6] [Peak~1x10[super 5][space] Mean=5x10[super 3][space] ]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=15.6 Mean=3.5] [Peak=39.8 Mean=8.9] [Peak~9x10[super 4][space] Mean=5x10[super 3][space] ]]
-]
-
-[h4 Testing]
-
-There are two sets of tests: spot tests compare values taken from
-[@http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=BetaRegularized Mathworld's online function evaluator]
-with this implementation: they provide a basic "sanity check"
-for the implementation, with one spot-test in each implementation-domain
-(see implementation notes below).
-
-Accuracy tests use data generated at very high precision
-(with [@http://shoup.net/ntl/doc/RR.txt NTL RR class] 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 /not/ used in the implementation,
-and therefore we have test data that is fully independent of the code.
-
-[h4 Implementation]
-
-This implementation is closely based upon
-[@http://portal.acm.org/citation.cfm?doid=131766.131776 "Algorithm 708; Significant digit computation of the incomplete beta function ratios", DiDonato and Morris, ACM, 1992.]
-
-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:
-
-[equation ibeta_inv5]
-
-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.
-
-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:
-
-[equation ibeta5]
-
-The following continued fraction is due to [@http://portal.acm.org/citation.cfm?doid=131766.131776 Didonato and Morris],
-and is used in this implementation when a and b are both greater than 1:
-
-[equation ibeta6]
-
-For smallish b and x then a series representation can be used:
-
-[equation ibeta7]
-
-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:
-
-[equation ibeta8]
-[/[equation ibeta9]]
-
-Where Q(a,x) is an [@http://functions.wolfram.com/GammaBetaErf/Gamma2/ incomplete gamma function].
-Note that this method relies
-on keeping a table of all the p[sub n ] previously computed, which does limit
-the precision of the method, depending upon the size of the table used.
-
-When /a/ and /b/ are both small integers, then we can relate the incomplete
-beta to the binomial distribution and use the following finite sum:
-
-[equation ibeta12]
-
-Finally we can sidestep difficult areas, or move to an area with a more
-efficient means of computation, by using the duplication formulae:
-
-[equation ibeta10]
-
-[equation ibeta11]
-
-The domains of a, b and x for which the various methods are used are identical
-to those described in the
-[@http://portal.acm.org/citation.cfm?doid=131766.131776 Didonato and Morris TOMS 708 paper].
-
-[endsect][/section:ibeta_function The Incomplete Beta Function]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/ibeta_inv.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/ibeta_inv.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,352 +0,0 @@
-[section:ibeta_inv_function The Incomplete Beta Function Inverses]
-
-``
-#include <boost/math/special_functions/beta.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, const ``__Policy``&);
-
- template <class T1, class T2, class T3, class T4>
- ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, T4* py);
-
- template <class T1, class T2, class T3, class T4, class ``__Policy``>
- ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, T4* py, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, const ``__Policy``&);
-
- template <class T1, class T2, class T3, class T4>
- ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, T4* py);
-
- template <class T1, class T2, class T3, class T4, class ``__Policy``>
- ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, T4* py, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta_inva(T1 b, T2 x, T3 p);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta_inva(T1 b, T2 x, T3 p, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibetac_inva(T1 b, T2 x, T3 q);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibetac_inva(T1 b, T2 x, T3 q, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta_invb(T1 a, T2 x, T3 p);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta_invb(T1 a, T2 x, T3 p, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibetac_invb(T1 a, T2 x, T3 q);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibetac_invb(T1 a, T2 x, T3 q, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-
-There are six [@http://functions.wolfram.com/GammaBetaErf/ incomplete beta function inverses]
-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).
-
-[optional_policy]
-
-[tip When people normally talk about the inverse of the incomplete
-beta function, they are talking about inverting on parameter /x/.
-These are implemented here as ibeta_inv and ibeta_inv, and are by
-far the most efficient of the inverses presented here.
-
-The inverses on the /a/ and /b/ 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.]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when called with arguments T1...TN of different types.
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, const ``__Policy``&);
-
- template <class T1, class T2, class T3, class T4>
- ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, T4* py);
-
- template <class T1, class T2, class T3, class T4, class ``__Policy``>
- ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, T4* py, const ``__Policy``&);
-
-Returns a value /x/ such that: `p = ibeta(a, b, x);`
-and sets `*py = 1 - x` when the `py` parameter is provided and is non-null.
-Note that internally this function computes whichever is the smaller of
-`x` and `1-x`, and therefore the value assigned to `*py` is free from
-cancellation errors. That means that even if the function returns `1`, the
-value stored in `*py` may be non-zero, albeit very small.
-
-Requires: /a,b > 0/ and /0 <= p <= 1/.
-
-[optional_policy]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, const ``__Policy``&);
-
- template <class T1, class T2, class T3, class T4>
- ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, T4* py);
-
- template <class T1, class T2, class T3, class T4, class ``__Policy``>
- ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, T4* py, const ``__Policy``&);
-
-Returns a value /x/ such that: `q = ibetac(a, b, x);`
-and sets `*py = 1 - x` when the `py` parameter is provided and is non-null.
-Note that internally this function computes whichever is the smaller of
-`x` and `1-x`, and therefore the value assigned to `*py` is free from
-cancellation errors. That means that even if the function returns `1`, the
-value stored in `*py` may be non-zero, albeit very small.
-
-Requires: /a,b > 0/ and /0 <= q <= 1/.
-
-[optional_policy]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta_inva(T1 b, T2 x, T3 p);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta_inva(T1 b, T2 x, T3 p, const ``__Policy``&);
-
-Returns a value /a/ such that: `p = ibeta(a, b, x);`
-
-Requires: /b > 0/, /0 < x < 1/ and /0 <= p <= 1/.
-
-[optional_policy]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibetac_inva(T1 b, T2 x, T3 p);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibetac_inva(T1 b, T2 x, T3 p, const ``__Policy``&);
-
-Returns a value /a/ such that: `q = ibetac(a, b, x);`
-
-Requires: /b > 0/, /0 < x < 1/ and /0 <= q <= 1/.
-
-[optional_policy]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibeta_invb(T1 b, T2 x, T3 p);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibeta_invb(T1 b, T2 x, T3 p, const ``__Policy``&);
-
-Returns a value /b/ such that: `p = ibeta(a, b, x);`
-
-Requires: /a > 0/, /0 < x < 1/ and /0 <= p <= 1/.
-
-[optional_policy]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` ibetac_invb(T1 b, T2 x, T3 p);
-
- template <class T1, class T2, class T3, class ``__Policy``>
- ``__sf_result`` ibetac_invb(T1 b, T2 x, T3 p, const ``__Policy``&);
-
-Returns a value /b/ such that: `q = ibetac(a, b, x);`
-
-Requires: /a > 0/, /0 < x < 1/ and /0 <= q <= 1/.
-
-[optional_policy]
-
-[h4 Accuracy]
-
-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 /p/ (or it's complement /q/) is very close to `0` or `1`.
-
-[h4 Testing]
-
-There are two sets of tests:
-
-* Basic sanity checks attempt to "round-trip" from
-/a, b/ and /x/ to /p/ or /q/ 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
-/p/ or /q/ 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.
-* Accuracy checks using high precision test values. These measure
-the accuracy of the result, given exact input values.
-
-[h4 Implementation of ibeta_inv and ibetac_inv]
-
-These two functions share a common implementation.
-
-First an initial approximation to x is computed then the
-last few bits are cleaned up using
-[@http://en.wikipedia.org/wiki/Simple_rational_approximation Halley iteration].
-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 /a/ and
-/b/ (which generally form the more important use cases).
-
-The initial guesses used for iteration are obtained as follows:
-
-Firstly recall that:
-
-[equation ibeta_inv5]
-
-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.
-
-For `a+b >= 5` the initial guess is computed using the methods described in:
-
-Asymptotic Inversion of the Incomplete Beta Function,
-by N. M. [@http://homepages.cwi.nl/~nicot/ Temme].
-Journal of Computational and Applied Mathematics 41 (1992) 145-157.
-
-The nearly symmetrical case (section 2 of the paper) is used for
-
-[equation ibeta_inv2]
-
-and involves solving the inverse error function first. The method is accurate
-to at least 2 decimal digits when [^a = 5] rising to at least 8 digits when
-[^a = 10[super 5]].
-
-The general error function case (section 3 of the paper) is used for
-
-[equation ibeta_inv3]
-
-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 [^a+b = 5] rising to 11 digits when [^a+b = 10[super 5]].
-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[super 1/a] < 0.0025
-then it is better to use the following as an initial estimate:
-
-[equation ibeta_inv4]
-
-Finally the for all other cases where `a+b > 5` 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 [^a = 5] rising to at least 10 digits when
-[^a = 10[super 5]]. 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 ([^q[super 1/p] < 10[super -3]]) we use:
-
-[equation ibeta_inv6]
-
-which is both cheaper to compute than the full method, and a more accurate
-estimate on q.
-
-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.
-
-When a and b are both less than 1, then there is a point of inflection in
-the incomplete beta at point `xs = (1 - a) / (2 - a - b)`. Therefore if
-[^p > I[sub x](a,b)] 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 `xs`, and on a convex curve.
-An initial estimate for x is made with:
-
-[equation ibeta_inv7]
-
-which is provably below the true value for x:
-[@http://en.wikipedia.org/wiki/Newton%27s_method Newton iteration] will
-therefore smoothly converge on x without problems caused by overshooting etc.
-
-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 `xs = (1 - a) / (2 - a - b)`. Therefore
-if [^p > I[sub x](a,b)] 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 `xs`, and on a concave curve.
-An initial estimate for x is made with:
-
-[equation ibeta_inv4]
-
-which can be improved somewhat to:
-
-[equation ibeta_inv1]
-
-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.
-
-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
-
-[equation ibeta_inv4]
-
-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.
-
-Things can be improved by considering the incomplete beta as a distorted
-quarter circle, and estimating y from:
-
-[equation ibeta_inv8]
-
-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.
-
-[h4 Implementation of inverses on the a and b parameters]
-
-These four functions share a common implementation.
-
-First an initial approximation is computed for /a/ or /b/:
-where possible this uses a Cornish-Fisher expansion for the
-negative binomial distribution to get within around 1 of the
-result. However, when /a/ or /b/ are very small the Cornish Fisher
-expansion is not usable, in this case the initial approximation
-is chosen so that
-I[sub x](a, b) is near the middle of the range [0,1].
-
-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 /a/ or /b/ would improve these
-functions quite substantially: currently 10-20 incomplete beta
-function invocations are required to find the root.
-
-[endsect][/section:ibeta_inv_function The Incomplete Beta Function Inverses]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/igamma.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/igamma.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,386 +0,0 @@
-[section:igamma Incomplete Gamma Functions]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/gamma.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2>
- ``__sf_result`` gamma_p(T1 a, T2 z);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_p(T1 a, T2 z, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` gamma_q(T1 a, T2 z);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_q(T1 a, T2 z, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` tgamma_lower(T1 a, T2 z);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` tgamma_lower(T1 a, T2 z, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` tgamma(T1 a, T2 z);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` tgamma(T1 a, T2 z, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-There are four [@http://mathworld.wolfram.com/IncompleteGammaFunction.html
-incomplete gamma functions]:
-two are normalised versions (also known as /regularized/ incomplete gamma functions)
-that return values in the range [0, 1], and two are non-normalised and
-return values in the range [0, [Gamma](a)]. Users interested in statistical
-applications should use the
-[@http://mathworld.wolfram.com/RegularizedGammaFunction.html normalised versions (gamma_p and gamma_q)].
-
-All of these functions require /a > 0/ and /z >= 0/, otherwise they return
-the result of __domain_error.
-
-[optional_policy]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types, otherwise the return type is simply T1.
-
- template <class T1, class T2>
- ``__sf_result`` gamma_p(T1 a, T2 z);
-
- template <class T1, class T2, class Policy>
- ``__sf_result`` gamma_p(T1 a, T2 z, const ``__Policy``&);
-
-Returns the normalised lower incomplete gamma function of a and z:
-
-[equation igamma4]
-
-This function changes rapidly from 0 to 1 around the point z == a:
-
-[$../graphs/gamma_p.png]
-
- template <class T1, class T2>
- ``__sf_result`` gamma_q(T1 a, T2 z);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_q(T1 a, T2 z, const ``__Policy``&);
-
-Returns the normalised upper incomplete gamma function of a and z:
-
-[equation igamma3]
-
-This function changes rapidly from 1 to 0 around the point z == a:
-
-[$../graphs/gamma_q.png]
-
- template <class T1, class T2>
- ``__sf_result`` tgamma_lower(T1 a, T2 z);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` tgamma_lower(T1 a, T2 z, const ``__Policy``&);
-
-Returns the full (non-normalised) lower incomplete gamma function of a and z:
-
-[equation igamma2]
-
- template <class T1, class T2>
- ``__sf_result`` tgamma(T1 a, T2 z);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` tgamma(T1 a, T2 z, const ``__Policy``&);
-
-Returns the full (non-normalised) upper incomplete gamma function of a and z:
-
-[equation igamma1]
-
-[h4 Accuracy]
-
-The following tables give peak and mean relative errors in over various domains of
-a and z, along with comparisons to the __gsl and __cephes libraries.
-Note that only results for the widest floating point type on the system are given as
-narrower types have __zero_error.
-
-Note that errors grow as /a/ grows larger.
-
-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.
-
-All values are in units of epsilon.
-
-[table Errors In the Function gamma_p(a,z)
-[[Significand Size] [Platform and Compiler]
- [0.5 < a < 100
-
- and
-
- 0.01*a < z < 100*a]
- [1x10[super -12] < a < 5x10[super -2]
-
- and
-
- 0.01*a < z < 100*a]
- [1e-6 < a < 1.7x10[super 6]
-
- and
-
- 1 < z < 100*a]]
-[[53] [Win32, Visual C++ 8]
- [Peak=36 Mean=9.1
-
- (GSL Peak=342 Mean=46)
-
- (__cephes Peak=491 Mean=102)]
- [Peak=4.5 Mean=1.4
-
- (GSL Peak=4.8 Mean=0.76)
-
- (__cephes Peak=21 Mean=5.6)]
- [Peak=244 Mean=21
-
- (GSL Peak=1022 Mean=1054)
-
- (__cephes Peak~8x10[super 6] Mean~7x10[super 4])]]
-[[64] [RedHat Linux IA32, gcc-3.3] [Peak=241 Mean=36] [Peak=4.7 Mean=1.5] [Peak~30,220 Mean=1929]]
-[[64] [Redhat Linux IA64, gcc-3.4] [Peak=41 Mean=10] [Peak=4.7 Mean=1.4] [Peak~30,790 Mean=1864]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=40.2 Mean=10.2] [Peak=5 Mean=1.6] [Peak=5,476 Mean=440]]
-]
-
-[table Errors In the Function gamma_q(a,z)
-[[Significand Size] [Platform and Compiler]
-[0.5 < a < 100
-
-and
-
-0.01*a < z < 100*a]
-[1x10[super -12] < a < 5x10[super -2]
-
-and
-
-0.01*a < z < 100*a] [1x10[super -6] < a < 1.7x10[super 6]
-
-and
-
-1 < z < 100*a]]
-[[53] [Win32, Visual C++ 8] [Peak=28.3 Mean=7.2
-
-(GSL Peak=201 Mean=13)
-
-(__cephes Peak=556 Mean=97)] [Peak=4.8 Mean=1.6
-
-(GSL Peak~1.3x10[super 10] Mean=1x10[super +9])
-
-(__cephes Peak~3x10[super 11] Mean=4x10[super 10])] [Peak=469 Mean=33
-
-(GSL Peak=27,050 Mean=2159)
-
-(__cephes Peak~8x10[super 6] Mean~7x10[super 5])]]
-[[64] [RedHat Linux IA32, gcc-3.3] [Peak=280 Mean=33] [Peak=4.1 Mean=1.6] [Peak=11,490 Mean=732]]
-[[64] [Redhat Linux IA64, gcc-3.4] [Peak=32 Mean=9.4] [Peak=4.7 Mean=1.5] [Peak=6815 Mean=414]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=37 Mean=10] [Peak=11.2 Mean=2.0] [Peak=4,999 Mean=298]]
-]
-
-[table Errors In the Function tgamma_lower(a,z)
-[[Significand Size] [Platform and Compiler] [0.5 < a < 100
-
-and
-
-0.01*a < z < 100*a] [1x10[super -12] < a < 5x10[super -2]
-
-and
-
-0.01*a < z < 100*a]]
-[[53] [Win32, Visual C++ 8] [Peak=5.5 Mean=1.4] [Peak=3.6 Mean=0.78]]
-[[64] [RedHat Linux IA32, gcc-3.3] [Peak=402 Mean=79] [Peak=3.4 Mean=0.8]]
-[[64] [Redhat Linux IA64, gcc-3.4] [Peak=6.8 Mean=1.4] [Peak=3.4 Mean=0.78]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=6.1 Mean=1.8] [Peak=3.7 Mean=0.89]]
-]
-
-[table Errors In the Function tgamma(a,z)
-[[Significand Size] [Platform and Compiler] [0.5 < a < 100
-
-and
-
-0.01*a < z < 100*a] [1x10[super -12] < a < 5x10[super -2]
-
-and
-
-0.01*a < z < 100*a]]
-[[53] [Win32, Visual C++ 8] [Peak=5.9 Mean=1.5] [Peak=1.8 Mean=0.6]]
-[[64] [RedHat Linux IA32, gcc-3.3] [Peak=596 Mean=116] [Peak=3.2 Mean=0.84]]
-[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=40.2 Mean=2.5] [Peak=3.2 Mean=0.8]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=364 Mean=17.6] [Peak=12.7 Mean=1.8]]
-]
-
-[h4 Testing]
-
-There are two sets of tests: spot tests compare values taken from
-[@http://functions.wolfram.com/GammaBetaErf/ 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 __lanczos, 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.
-
-[h4 Implementation]
-
-These four functions share a common implementation since
-they are all related via:
-
-1) [equation igamma5]
-
-2) [equation igamma6]
-
-3) [equation igamma7]
-
-The lower incomplete gamma is computed from its series representation:
-
-4) [equation igamma8]
-
-Or by subtraction of the upper integral from either [Gamma](a) or 1
-when /x > a and x > 1.1/.
-
-The upper integral is computed from Legendre's continued fraction representation:
-
-5) [equation igamma9]
-
-When /x > 1.1/ or by subtraction of the lower integral from either [Gamma](a) or 1
-when /x < a/.
-
-For /x < 1.1/ 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:
-
-6) [equation igamma10]
-
-That lends itself to calculation of the upper integral via rearrangement
-to:
-
-7) [equation igamma11]
-
-Refer to the documentation for __powm1 and __tgamma1pm1 for details
-of their implementation. Note however that the precision of __tgamma1pm1
-is capped to either around 35 digits, or to that of the __lanczos 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.
-
-For /x < 1.1/ the crossover point where the result is ~0.5 no longer
-occurs for /x ~ y/. Using /x * 1.1 < a/ as the crossover criterion
-for /0.5 < x <= 1.1/ keeps the maximum value computed (whether
-it's the upper or lower interval) to around 0.6. Likewise for
-/x <= 0.5/ then using /-0.4 / log(x) < a/ as the crossover criterion
-keeps the maximum value computed to around 0.7
-(whether it's the upper or lower interval).
-
-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 /1 <= a < 30/ then the following
-finite sum is used:
-
-9) [equation igamma1f]
-
-While for half integers in the range /0.5 <= a < 30/ then the
-following finite sum is used:
-
-10) [equation igamma2f]
-
-These are both more stable and more efficient than the continued fraction
-alternative.
-
-When the argument /a/ is large, and /x ~ a/ then the series (4) and continued
-fraction (5) above are very slow to converge. In this area an expansion due to
-Temme is used:
-
-11) [equation igamma16]
-
-12) [equation igamma17]
-
-13) [equation igamma18]
-
-14) [equation igamma19]
-
-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][super n] are computed in advance using the recurrence
-relations given by Temme. The zone where these expansions are used is
-
- (a > 20) && (a < 200) && fabs(x-a)/a < 0.4
-
-And:
-
- (a > 200) && (fabs(x-a)/a < 4.5/sqrt(a))
-
-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[super -6], 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 `exp` and `erfc` 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.
-
-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 __lanczos gives the greatest accuracy:
-
-15) [equation igamma12]
-
-In the event that this causes underflow/overflow then the exponent can
-be reduced by a factor of /a/ and brought inside the power term.
-
-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:
-
-16) [equation igamma13]
-
-when /a-x/ 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 /exp/ 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 /log(1+x)-x/ here
-is inspired by Temme (see references below).
-
-[h4 References]
-
-* N. M. Temme, A Set of Algorithms for the Incomplete Gamma Functions,
-Probability in the Engineering and Informational Sciences, 8, 1994.
-* N. M. Temme, The Asymptotic Expansion of the Incomplete Gamma Functions,
-Siam J. Math Anal. Vol 10 No 4, July 1979, p757.
-* 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.
-* 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 http://citeseer.ist.psu.edu/gautschi98incomplete.html]
-
-[endsect][/section:igamma The Incomplete Gamma Function]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/igamma_inv.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/igamma_inv.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,161 +0,0 @@
-[section:igamma_inv Incomplete Gamma Function Inverses]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/gamma.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2>
- ``__sf_result`` gamma_q_inv(T1 a, T2 q);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_q_inv(T1 a, T2 q, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` gamma_p_inv(T1 a, T2 p);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_p_inv(T1 a, T2 p, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` gamma_q_inva(T1 x, T2 q);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_q_inva(T1 x, T2 q, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` gamma_p_inva(T1 x, T2 p);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_p_inva(T1 x, T2 p, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-There are four [@http://mathworld.wolfram.com/IncompleteGammaFunction.html incomplete gamma function]
-inverses which either compute
-/x/ given /a/ and /p/ or /q/,
-or else compute /a/ given /x/ and either /p/ or /q/.
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types, otherwise the return type is simply T1.
-
-[optional_policy]
-
-[tip When people normally talk about the inverse of the incomplete
-gamma function, they are talking about inverting on parameter /x/.
-These are implemented here as gamma_p_inv and gamma_q_inv, and are by
-far the most efficient of the inverses presented here.
-
-The inverse on the /a/ 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.]
-
-
- template <class T1, class T2>
- ``__sf_result`` gamma_q_inv(T1 a, T2 q);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_q_inv(T1 a, T2 q, const ``__Policy``&);
-
-Returns a value x such that: `q = gamma_q(a, x);`
-
-Requires: /a > 0/ and /1 >= p,q >= 0/.
-
- template <class T1, class T2>
- ``__sf_result`` gamma_p_inv(T1 a, T2 p);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_p_inv(T1 a, T2 p, const ``__Policy``&);
-
-Returns a value x such that: `p = gamma_p(a, x);`
-
-Requires: /a > 0/ and /1 >= p,q >= 0/.
-
- template <class T1, class T2>
- ``__sf_result`` gamma_q_inva(T1 x, T2 q);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_q_inva(T1 x, T2 q, const ``__Policy``&);
-
-Returns a value a such that: `q = gamma_q(a, x);`
-
-Requires: /x > 0/ and /1 >= p,q >= 0/.
-
- template <class T1, class T2>
- ``__sf_result`` gamma_p_inva(T1 x, T2 p);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` gamma_p_inva(T1 x, T2 p, const ``__Policy``&);
-
-Returns a value a such that: `p = gamma_p(a, x);`
-
-Requires: /x > 0/ and /1 >= p,q >= 0/.
-
-[h4 Accuracy]
-
-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 __gamma_p and __gamma_q
-functions.
-
-[h4 Testing]
-
-There are two sets of tests:
-
-* Basic sanity checks attempt to "round-trip" from
-/a/ and /x/ to /p/ or /q/ 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
-/p/ or /q/ 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.
-* Accuracy checks using high precision test values. These measure
-the accuracy of the result, given exact input values.
-
-[h4 Implementation]
-
-The functions gamma_p_inv and [@http://functions.wolfram.com/GammaBetaErf/InverseGammaRegularized/ gamma_q_inv]
-share a common implementation.
-
-First an initial approximation is computed using the methodology described
-in:
-
-[@http://portal.acm.org/citation.cfm?id=23109&coll=portal&dl=ACM
-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.]
-
-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.
-
-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.
-
-An initial approximation for /a/ is computed very crudely so that
-/gamma_p(a, x) ~ 0.5/, 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.
-
-[endsect][/section The Incomplete Gamma Function Inverses]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/implementation.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/implementation.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,767 +0,0 @@
-[section:implementation Additional Implementation Notes]
-
-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.
-
-[h4 Implemention philosophy]
-
-"First be right, then be fast."
-
-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.
-
-So our priority is accuracy.
-
-To permit evaluation of accuracy of the special functions,
-production of extremely accurate tables of test values
-has received considerable effort.
-
-(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 *days*
-calculating some tables of test values!)
-
-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).
-
-If these prove accurate enough to be "fit for his purpose",
-then a user may substitute his custom specialization.
-
-For example, there are approximations dating back from times
-when computation was a *lot* more expensive:
-
-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).
-
-A H Carter, Approximations to percentage points of the z-distribution,
-Biometrika 34(2), 352 - 358 (Dec 1947).
-
-These could still provide sufficient accuracy for some speed-critical applications.
-
-[h4 Accuracy and Representation of Test Values]
-
-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.
-
-Functions that return constants values, like kurtosis for example, are written as
-
-`static_cast<RealType>(-3) / 5;`
-
-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).
-
-So tests for one third, *not* exactly representable with radix two floating-point,
-(should) use, for example:
-
-`static_cast<RealType>(1) / 3;`
-
-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 `a/b` with `b`
-a power of two (in order to ensure that the result is an exactly
-representable binary value).
-
-[h4 Tolerance of Tests]
-
-The tolerances need to be set to the maximum of:
-
-* Some epsilon value.
-* The accuracy of the data (often only near 64-bit double).
-
-Otherwise when long double has more digits than the test data, then no
-amount of tweaking an epsilon based tolerance will work.
-
-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.
-
-[h4 Handling Unsuitable Arguments]
-
-In
-[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1665.pdf Errors in Mathematical Special Functions], J. Marraffino & M. Paterno
-it is proposed that signalling a domain error is mandatory
-when the argument would give an mathematically undefined result.
-
-*Guideline 1
-
-[: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.]
-
-Put crudely, if the function goes to + infinity
-and then emerges 'round-the-back' with - infinity,
-it is NOT defined.
-
-[: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.]
-
-*Guideline 2
-
-[: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.]
-
-This implementation is believed to follow these proposals and to assist compatibility with
-['ISO/IEC 9899:1999 Programming languages - C]
-and with the
-[@www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Draft Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph 5].
-[link math_toolkit.main_overview.error_handling See also domain_error].
-
-See __policy_ref for details of the error handling policies that should allow
-a user to comply with any of these recommendations, as well as other behaviour.
-
-See [link math_toolkit.main_overview.error_handling error handling]
-for a detailed explanation of the mechanism, and
-[link math_toolkit.dist.stat_tut.weg.error_eg error_handling example]
-and
-[@/../../example/error_handling_example.cpp error_handling_example.cpp]
-
-[caution 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 *all* exceptions
-*and* using try&catch is recommended for all applications.
-However, for simplicity, this is not done for most examples.]
-
-[h4 Handling of Functions that are Not Mathematically defined]
-
-Functions that are not mathematically defined,
-like the Cauchy mean, fail to compile by default.
-[link math_toolkit.policy.pol_ref.assert_undefined A policy]
-allows control of this.
-
-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,
-
-`#define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error`
-
-appears before the first Boost include,
-then if the un-implemented function is called,
-mean(cauchy<>()) will return std::numeric_limits<T>::quiet_NaN().
-
-[warning If `std::numeric_limits<T>::has_quiet_NaN` is false
-(for example T is a User-defined type),
-then an exception will always be thrown when a domain error occurs.
-Catching exceptions is therefore strongly recommended.]
-
-[h4 Median of distributions]
-
-There are many distributions for which we have been unable to find an analytic formula,
-and this has deterred us from implementing
-[@http://en.wikipedia.org/wiki/Median median functions], the mid-point in a list of values.
-
-However a useful median approximation for distribution `dist` may be available from
-
-`quantile(dist, 0.5)`.
-
-[@http://www.amstat.org/publications/jse/v13n2/vonhippel.html Mean, Median, and Skew, Paul T von Hippel]
-
-[@http://documents.wolfram.co.jp/teachersedition/MathematicaBook/24.5.html Descriptive Statistics,]
-
-[@http://documents.wolfram.co.jp/v5/Add-onsLinks/StandardPackages/Statistics/DescriptiveStatistics.html and ]
-
-[@http://documents.wolfram.com/v5/TheMathematicaBook/AdvancedMathematicsInMathematica/NumericalOperationsOnData/3.8.1.html
-Mathematica Basic Statistics.] give more detail, in particular for discrete distributions.
-
-
-[h4 Handling of Floating-Point Infinity]
-
-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 __domain_error.
-
-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 `std::numeric_limits<RealType>::infinity()`
-and would return zero rather than any representation of infinity.
-
-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.
-
-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 realType on that implementation.
-
-Overflow, underflow, denorm can be handled using __error_policy.
-
-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 __error_policy.
-
-[h4 Scale, Shape and Location]
-
-We considered adding location and scale to the list of functions, for example:
-
- template <class RealType>
- inline RealType scale(const triangular_distribution<RealType>& dist)
- {
- RealType lower = dist.lower();
- RealType mode = dist.mode();
- RealType upper = dist.upper();
- RealType result; // of checks.
- if(false == detail::check_triangular(BOOST_CURRENT_FUNCTION, lower, mode, upper, &result))
- {
- return result;
- }
- return (upper - lower);
- }
-
-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.
-
-[h4 Notes on Implementation of Specific Functions & Distributions]
-
-* 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.
-
-[h4 Rational Approximations Used]
-
-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
-[link math_toolkit.toolkit.internals2.minimax our Remez code].
-
-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.
-
-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).
-
-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 `exp` 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 [@http://front.math.ucdavis.edu/0101.5042
-"Approximate construction of rational approximations and the effect
-of error autocorrection.", Grigori Litvinov, eprint arXiv:math/0101042].
-Therefore the coefficients still need to be accurately calculated, even if they can
-be in error compared to the "true" minimax solution.
-
-[h4 Representation of Mathematical Constants]
-
-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 like NTL::quad_float and NTL::RR.
-
-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.
-
-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).
-
-For example, pi is defined:
-
- BOOST_DEFINE_MATH_CONSTANT(pi,
- 3.141592653589793238462643383279502884197169399375105820974944,
- 5923078164062862089986280348253421170679821480865132823066470938446095505,
- 0)
-
-And used thus:
-
- using namespace boost::math::constants;
-
- double diameter = 1.;
- double radius = diameter * pi<double>();
-
- or boost::math::constants::pi<NTL::RR>()
-
-Note that it is necessary (if inconvenient) to specify the type explicitly.
-
-So you cannot write
-
- double p = boost::math::constants::pi<>(); // could not deduce template argument for 'T'
-
-Neither can you write:
-
- double p = boost::math::constants::pi; // Context does not allow for disambiguation of overloaded function
- double p = boost::math::constants::pi(); // Context does not allow for disambiguation of overloaded function
-
-[h4 Thread safety]
-
-Reporting of error by setting errno 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, errno gets left unused anyway.
-
-Other than that, the code is intended to be thread safe *for built in
-real-number types* : so float, double and long double are all thread safe.
-
-For non-built-in types - NTL::RR for example - initialisation of the various
-constants used in the implementation is potentially *not* thread safe.
-This most undesiable, but it would be a signficant challenge to fix it.
-Some compilers may offer the option of having
-static-constants initialised in a thread safe manner (Commeau, and maybe
-others?), if that's the case then the problem is solved. This is a topic of
-hot debate for the next C++ std revision, so hopefully all compilers
-will be required to do the right thing here at some point.
-
-[h4 Sources of Test Data]
-
-We found a large number of sources of test data.
-We have assumed that these are /"known good"/
-if they agree with the results from our test
-and only consulted other sources for their /'vote'/
-in the case of serious disagreement.
-The accuracy, actual and claimed, vary very widely.
-Only [@http://functions.wolfram.com/ Wolfram Mathematica functions]
-provided a higher accuracy than
-C++ double (64-bit floating-point) and was regarded as
-the most-trusted source by far.
-
-A useful index of sources is:
-[@http://www.sal.hut.fi/Teaching/Resources/ProbStat/table.html
-Web-oriented Teaching Resources in Probability and Statistics]
-
-[@http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm Statlet]:
-Is a Javascript application that calculates and plots probability distributions,
-and provides the most complete range of distributions:
-
-[: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.]
-
-It calculates pdf, cdf, survivor, log survivor, hazard, tail areas,
-& critical values for 5 tail values.
-
-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.
-
-[h4 Creating and Managing the Equations]
-
-The primary source for the equations is now
-[@http://www.w3.org/Math/ MathML]: see the
-*.mml files in libs\/math\/doc\/equations\/.
-
-These are most easily edited by a GUI editor such as
-[@http://mathcast.sourceforge.net/home.html Mathcast],
-please note that the equation editor supplied with Open Office
-currently mangles these files and should not currently be used.
-
-Convertion to SVG was achieved using
-[@http://www.grigoriev.ru/svgmath/ SVGMath] and a command line
-such as:
-
-[pre
-$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
-]
-
-Note that SVGMath requires that the mml files are *not* 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.
-
-If neccessary the XHTML wrapper can be removed with:
-
-[pre cat filename | tr -d "\\r\\n" \| sed -e 's\/.*\\(<math\[^>\]\*>.\*<\/math>\\).\*\/\\1\/' > newfile]
-
-Setting up fonts for SVGMath is currently rather tricky, on a windows system
-JM's font setup looks like this:
-
-[pre
-<!-- MathML-to-SVG configuration file -->
-<config verbose="true">
- <!-- Fallback font family -->
- <fallback family="Lucida Sans Unicode"\/>
-
- <!-- Default values for MathML properties. -->
- <!-- Most of these are defined in the MathML Rec - change with care -->
- <defaults displaystyle="false"
- mathsize="12pt"
- scriptminsize="8pt"
- scriptsizemultiplier="0.71"
- veryverythinmathspace="0.0555556em"
- verythinmathspace="0.111111em"
- thinmathspace="0.166667em"
- mediummathspace="0.222222em"
- thickmathspace="0.277778em"
- verythickmathspace="0.333333em"
- veryverythickmathspace="0.388889em"
- rowspacing="1.0ex"
- columnspacing="0.8em"
- framespacing="0.4em 0.5ex"\/>
-
- <!-- Additional styling for individual operators -->
- <!-- Make differentials italic -->
- <operator-style operator="&#x2145;" fontstyle="italic"\/>
- <operator-style operator="&#x2146;" fontstyle="italic"\/>
-
- <!-- Font families -->
- <family name="Times New Roman">
- <font ttf="C:\WINDOWS\Fonts\times.ttf"\/>
- <font weight="bold" ttf="C:\WINDOWS\Fonts\timesbd.ttf"\/>
- <font style="italic" ttf="C:\WINDOWS\Fonts\timesi.ttf"\/>
- <font weight="bold" style="italic" ttf="C:\WINDOWS\Fonts\timesbi.ttf"\/>
- <\/family>
-
- <family name="Arial">
- <font ttf="C:\WINDOWS\Fonts\arial.ttf"\/>
- <font weight="bold" ttf="C:\WINDOWS\Fonts\arialbd.ttf"\/>
- <font style="italic" ttf="C:\WINDOWS\Fonts\ariali.ttf"\/>
- <font weight="bold" style="italic" ttf="C:\WINDOWS\Fonts\arialbi.ttf"\/>
- <\/family>
-
- <family name="Courier New">
- <font ttf="C:\WINDOWS\Fonts\cour.ttf"\/>
- <font weight="bold" ttf="C:\WINDOWS\Fonts\courbd.ttf"\/>
- <font style="italic" ttf="C:\WINDOWS\Fonts\couri.ttf"\/>
- <font weight="bold" style="italic" ttf="C:\WINDOWS\Fonts\courbi.ttf"\/>
- <\/family>
-
- <family name="Euclid Fraktur">
- <font ttf="C:\WINDOWS\Fonts\eufrak.ttf"\/>
- <font weight="bold" ttf="C:\WINDOWS\Fonts\eufrakb.ttf"\/>
- <\/family>
-
- <family name="Monotype Corsiva">
- <font ttf="C:\WINDOWS\Fonts\mtcorsva.ttf"\/>
- <\/family>
-
- <family name="Lucida Sans Unicode">
- <font ttf="C:\WINDOWS\Fonts\lsansuni.ttf"\/>
- <\/family>
-
- <!-- Math variant definitions -->
- <!-- Serif -->
- <mathvariant name="normal"
- family="Times New Roman, Lucida Sans Unicode"\/>
- <mathvariant name="bold"
- family="Times New Roman, Lucida Sans Unicode" weight="bold"\/>
- <mathvariant name="italic"
- family="Times New Roman, Lucida Sans Unicode" style="italic"\/>
- <mathvariant name="bold-italic"
- family="Times New Roman, Lucida Sans Unicode" weight="bold" style="italic"\/>
-
- <!-- Sans-Serif -->
- <mathvariant name="sans-serif"
- family="Arial, Lucida Sans Unicode"\/>
- <mathvariant name="bold-sans-serif"
- family="Arial, Lucida Sans Unicode" weight="bold"\/>
- <mathvariant name="sans-serif-italic"
- family="Arial, Lucida Sans Unicode" style="italic"\/>
- <mathvariant name="sans-serif-bold-italic"
- family="Arial, Lucida Sans Unicode" weight="bold" style="italic"\/>
-
- <!-- Fraktur -->
- <mathvariant name="fraktur"
- family="Euclid Fraktur, Lucida Sans Unicode"\/>
- <mathvariant name="bold-fraktur"
- family="Euclid Fraktur, Lucida Sans Unicode" weight="bold"\/>
-
- <!-- Script -->
- <mathvariant name="script"
- family="Monotype Corsiva, Lucida Sans Unicode"\/>
- <mathvariant name="bold-script"
- family="Monotype Corsiva, Lucida Sans Unicode" weight="bold"\/>
-
- <!-- Monospace -->
- <mathvariant name="monospace" family="Courier New, Lucida Sans Unicode"\/>
-
- <!-- Double-struck -->
- <mathvariant name="double-struck" family="Lucida Sans Unicode"\/>
-<\/config>
-]
-
-Note that unlike the sample config file supplied with SVGMath this does not
-make use of the Mathematica 7 font as this lacks sufficient Unicode information
-for it to be used with either SVGMath or XEP "as is".
-
-Also note that the SVG files in the repository are almost certainly
-Windows-specific since they reference various Windows Fonts.
-
-PNG files can be created from the SVG's using
-[@http://xmlgraphics.apache.org/batik/tools/rasterizer.html Batik]
-and a command such as:
-
-[pre java -jar 'C:\download\open\batik-1.7\batik-rasterizer.jar' -dpi 120 *.svg]
-
-The PDF is generated using:
-
-[pre $bjam -a pdf xsl:param=admon.graphics.extension=".svg" \
->xsl:param=use.role.for.mediaobject=1 xsl:param=preferred.mediaobject.role=print]
-
-Note that XEP will have to be configured to *use and embed*
-whatever fonts are used by the SVG equations. JM's XEP
-config file looks like:
-
-[pre
-<?xml version="1.0" encoding="UTF-8"?>
-<config>
-
- <!-- ======================================================= -->
- <!-- Formatter options -->
- <!-- ======================================================= -->
- <options>
- <option name="LICENSE" value="license.xml"\/>
- <option name="TMPDIR" value="none"\/>
- <option name="BROKENIMAGE" value="images\/404.gif"\/>
- <option name="LOGO" value="images\/logo-renderx.svg"\/>
-
- <!-- Backend options -->
- <generator-options format="PDF">
- <!-- <option name="COMPRESS" value="false"\/> -->
- <!-- <option name="PDF_VERSION" value="1.3"\/> -->
- <\/generator-options>
-
- <generator-options format="PostScript">
- <!-- <option name="LANGUAGE_LEVEL" value="2"\/> -->
- <!-- <option name="CLONE_EPS" value="true"\/> -->
- <\/generator-options>
-
- <generator-options format="AFP">
- <option name="AFPCodepageTxt" value="Cp500"\/>
- <option name="AFPCodepage" value="T1V10500"\/>
- <option name="AFPLogLevel" value="0"\/>
- <option name="USE_PTOCA_LEVEL" value="3"\/>
- <option name="USE_BCOCA_LEVEL" value="1"\/>
- <option name="USE_GOCA_LEVEL" value="1"\/>
- <option name="RESOLUTION" value="1440"\/>
- <!-- <option name="AFPGrayImage" value="yes"\/> -->
- <option name="USE_SHADING_PATTERNS" value="yes"\/>
- <option name="USE_REPLICATE_AND_TRIM" value="yes"\/>
- <option name="SHADING_PATTERN_RESOLUTION" value="0.25"\/>
- <option name="TRY_USING_TIFF_COMPRESSION" value="yes"\/>
- <option name="AFPFont,Helvetica" value="C0H200.0, C0H300.0, C0H400.0, C0H500.0, C0H201.0, C0H301.0, C0H401.0, C0H501.0, 278"\/>
- <option name="AFPFont,Times" value="C0N200.0, C0N300.0, C0N400.0, C0N500.0, C0N201.0, C0N301.0, C0N401.0, C0N501.0, 250"\/>
- <option name="AFPFont,Courier" value="C04200.0, C04300.0, C04400.0, C04500.0, C04201.0, C04301.0, C04401.0, C04501.0, 600"\/>
- <option name="AFPFont,Arial" value="C0H200.0, C0H300.0, C0H400.0, C0H500.0, C0H201.0, C0H301.0, C0H401.0, C0H501.0, 278"\/>
- <option name="AFPFont,Times New Roman" value="C0N200.0, C0N300.0, C0N400.0, C0N500.0, C0N201.0, C0N301.0, C0N401.0, C0N501.0, 250"\/>
- <option name="AFPFont,Verdana" value="C0VE0.0, C0VEI.0, C0VEB.0, C0VEZ.0, C0H201.0, C0H301.0, C0H401.0, C0H501.0,278"\/>
- <option name="AFPFont,Interstate" value="C0IS0.0, C0ISB.0, C0IS0.0, C0ISB.0, C0H201.0, C0H301.0, C0H401.0, C0H501.0, 278"\/>
- <\/generator-options>
- <\/options>
-
- <!-- ======================================================= -->
- <!-- Fonts -->
- <!-- ======================================================= -->
-
- <fonts xml:base="fonts\/" default-family="Helvetica">
-
- <!-- Base Adobe fonts. -->
- <font-group label="Base 14" embed="false">
- <font-family name="Courier">
- <font><font-data afm="Courier.afm"\/><\/font>
- <font style="oblique"><font-data afm="Courier-Oblique.afm"\/><\/font>
- <font weight="bold"><font-data afm="Courier-Bold.afm"\/><\/font>
- <font weight="bold" style="oblique"><font-data afm="Courier-BoldOblique.afm"\/><\/font>
- <\/font-family>
-
- <font-family name="Helvetica">
- <font><font-data afm="Helvetica.afm"\/><\/font>
- <font style="oblique"><font-data afm="Helvetica-Oblique.afm"\/><\/font>
- <font weight="bold"><font-data afm="Helvetica-Bold.afm"\/><\/font>
- <font weight="bold" style="oblique"><font-data afm="Helvetica-BoldOblique.afm"\/><\/font>
- <\/font-family>
-
- <font-family name="Times" ligatures="fi fl">
- <font><font-data afm="Times-Roman.afm"\/><\/font>
- <font style="italic"><font-data afm="Times-Italic.afm"\/><\/font>
- <font weight="bold"><font-data afm="Times-Bold.afm"\/><\/font>
- <font weight="bold" style="italic"><font-data afm="Times-BoldItalic.afm"\/><\/font>
- <\/font-family>
-
- <font-family name="Symbol">
- <font><font-data afm="Symbol.afm"\/><\/font>
- <\/font-family>
-
- <font-family name="ZapfDingbats">
- <font><font-data afm="ZapfDingbats.afm"\/><\/font>
- <\/font-family>
- <\/font-group>
-
- <!-- Other Type1 fonts -->
- <font-group label="Assorted Type 1" embed="true">
- <font-family name="OmegaSerifIPA">
- <font><font-data afm="IPA.afm" pfa="IPA.pfa" glyph-list="IPA.glyphs"\/><\/font>
- <\/font-family>
- <font-alias name="OmegaIPA" value="OmegaSerifIPA"\/>
- <font-alias name="Phonetic" value="OmegaSerifIPA"\/>
- <\/font-group>
-
- <!-- Sample configuration for Windows TrueType fonts. -->
-
- <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"\/><\/font>
- <\/font-family>
-
- <\/font-group>
-
- <!-- Required aliases -->
- <font-alias name="monospace" value="Courier"\/>
- <font-alias name="sans-serif" value="Helvetica"\/>
- <font-alias name="serif" value="Times"\/>
- <font-alias name="cursive" value="Times"\/>
- <font-alias name="fantasy" value="Times"\/>
- <\/fonts>
-
- <!-- ======================================================= -->
- <!-- Language-specific data: hyphenation, line breaking, etc -->
- <!-- ======================================================= -->
- <languages default-language="en-US" xml:base="hyphen\/">
-
- <language name="English (US)" codes="none en-US eng-US">
- <hyphenation pattern="hyphen.tex"\/>
- <\/language>
-
- <language name="English (UK)" codes="en-GB eng-GB en eng">
- <hyphenation pattern="ukhyphen.tex"\/>
- <\/language>
-
- <language name="Russian" codes="ru rus">
- <hyphenation pattern="ruhyphal.tex" encoding="koi8-r"\/>
- <\/language>
-
- <language name="French" codes="fr fra fre">
- <hyphenation pattern="frhyph_rx.tex"\/>
- <\/language>
-
- <language name="German" codes="de deu ger">
- <hyphenation pattern="dehyph_rx.tex"\/>
- <\/language>
-
- <language name="Spanish" codes="es esl spa">
- <hyphenation pattern="eshyph_rx.tex"\/>
- <\/language>
-
- <language name="Polish" codes="pl pol">
- <hyphenation pattern="plhyph_rx.tex"\/>
- <\/language>
-
- <\/languages>
-
-<\/config>
-]
-
-XZ authored his equations using the venerable Latex, JM converted these to
-MathML using [@http://gentoo-wiki.com/HOWTO_Convert_LaTeX_to_HTML_with_MathML 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.
-
-Equations are embedded in the quickbook source using the /equation/
-template defined in math.qbk. This outputs Docbook XML that looks like:
-
-[pre
-<inlinemediaobject>
-<imageobject role="html">
-<imagedata fileref="../equations/myfile.png"></imagedata>
-</imageobject>
-<imageobject role="print">
-<imagedata fileref="../equations/myfile.svg"></imagedata>
-</imageobject>
-</inlinemediaobject>
-]
-
-MathML is not currently present in the Docbook output, or in the
-generated HTML: this needs further investigation.
-
-[endsect][/section:implementation Implementation Notes]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/internals_overview.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/internals_overview.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,22 +0,0 @@
-[section:internals_overview Overview]
-
-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
-['do not have stable interfaces].
-
-There is no doubt that these components can be improved, but they are also
-largely incidental to the main purpose of this library.
-
-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.
-
-[endsect][/section:internals_overview Overview]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/inv_hyper.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/inv_hyper.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,169 +0,0 @@
-[/ math.qbk
- Copyright 2006 Hubert Holin and John Maddock.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-[def __form1 [^\[0;+'''&#x221E;'''\[]]
-[def __form2 [^\]-'''&#x221E;''';+1\[]]
-[def __form3 [^\]-'''&#x221E;''';-1\[]]
-[def __form4 [^\]+1;+'''&#x221E;'''\[]]
-[def __form5 [^\[-1;-1+'''&#x03B5;'''\[]]
-[def __form6 '''&#x03B5;''']
-[def __form7 [^\]+1-'''&#x03B5;''';+1\]]]
-
-[def __effects [*Effects: ]]
-[def __formula [*Formula: ]]
-[def __exm1 '''<code>e<superscript>x</superscript> - 1</code>'''[space]]
-[def __ex '''<code>e<superscript>x</superscript></code>''']
-[def __te '''2&#x03B5;''']
-
-[section:inv_hyper Inverse Hyperbolic Functions]
-
-[section:inv_hyper_over Inverse Hyperbolic Functions Overview]
-
-The exponential funtion is defined, for all objects for which this makes sense,
-as the power series
-[equation special_functions_blurb1],
-with ['[^n! = 1x2x3x4x5...xn]] (and ['[^0! = 1]] by definition) being the factorial of ['[^n]].
-In particular, the exponential function is well defined for real numbers,
-complex number, quaternions, octonions, and matrices of complex numbers,
-among others.
-
-[: ['[*Graph of exp on R]] ]
-
-[: [$../graphs/exp_on_r.png] ]
-
-[: ['[*Real and Imaginary parts of exp on C]]]
-[: [$../graphs/im_exp_on_c.png]]
-
-The hyperbolic functions are defined as power series which
-can be computed (for reals, complex, quaternions and octonions) as:
-
-Hyperbolic cosine: [equation special_functions_blurb5]
-
-Hyperbolic sine: [equation special_functions_blurb6]
-
-Hyperbolic tangent: [equation special_functions_blurb7]
-
-[: ['[*Trigonometric functions on R (cos: purple; sin: red; tan: blue)]]]
-[: [$../graphs/trigonometric.png]]
-
-[: ['[*Hyperbolic functions on r (cosh: purple; sinh: red; tanh: blue)]]]
-[: [$../graphs/hyperbolic.png]]
-
-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 __form1, and
-therefore both have inverses. The hyperbolic cosine is one to one from __form2
-onto __form3 (and from __form4 onto __form3); the inverse function we use
-here is defined on __form3 with range __form2.
-
-The inverse of the hyperbolic tangent is called the Argument hyperbolic tangent,
-and can be computed as [equation special_functions_blurb15].
-
-The inverse of the hyperbolic sine is called the Argument hyperbolic sine,
-and can be computed (for __form5) as [equation special_functions_blurb17].
-
-The inverse of the hyperbolic cosine is called the Argument hyperbolic cosine,
-and can be computed as [equation special_functions_blurb18].
-
-[endsect]
-
-[section:acosh acosh]
-
-``
-#include <boost/math/special_functions/acosh.hpp>
-``
-
- template<class T>
- ``__sf_result`` acosh(const T x);
-
- template<class T, class ``__Policy``>
- ``__sf_result`` acosh(const T x, const ``__Policy``&);
-
-Computes the reciprocal of (the restriction to the range of __form1)
-[link math_toolkit.special.inv_hyper.inv_hyper_over
-the hyperbolic cosine function], at x. Values returned are positive. Generalised
-Taylor series are used near 1 and Laurent series are used near the
-infinity to ensure accuracy.
-
-If x is in the range __form2 then returns the result of __domain_error.
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the return type is `double` when T is an integer type, and T otherwise.
-
-[optional_policy]
-
-[endsect]
-
-[section:asinh asinh]
-
-``
-#include <boost/math/special_functions/asinh.hpp>
-``
-
- template<class T>
- ``__sf_result`` asinh(const T x);
-
- template<class T, class ``__Policy``>
- ``__sf_result`` asinh(const T x, const ``__Policy``&);
-
-Computes the reciprocal of
-[link math_toolkit.special.inv_hyper.inv_hyper_over
-the hyperbolic sine function].
-Taylor series are used at the origin and Laurent series are used near the
-infinity to ensure accuracy.
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the return type is `double` when T is an integer type, and T otherwise.
-
-[optional_policy]
-
-[endsect]
-
-[section:atanh atanh]
-
-``
-#include <boost/math/special_functions/atanh.hpp>
-``
-
- template<class T>
- ``__sf_result`` atanh(const T x);
-
- template<class T, class ``__Policy``>
- ``__sf_result`` atanh(const T x, const ``__Policy``&);
-
-Computes the reciprocal of
-[link math_toolkit.special.inv_hyper.inv_hyper_over
-the hyperbolic tangent function], at x.
-Taylor series are used at the origin to ensure accuracy.
-
-[optional_policy]
-
-If x is in the range
-__form3
-or in the range
-__form4
-then returns the result of __domain_error.
-
-If x is in the range
-__form5,
-then the result of -__overflow_error is returned, with
-__form6[space]
-denoting numeric_limits<T>::epsilon().
-
-If x is in the range
-__form7,
-then the result of __overflow_error is returned, with
-__form6[space]
-denoting
-numeric_limits<T>::epsilon().
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the return type is `double` when T is an integer type, and T otherwise.
-
-[endsect]
-
-[endsect]

Deleted: sandbox/math_toolkit/libs/math/doc/issues.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/issues.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,90 +0,0 @@
-[section:issues Known Issues, and Todo List]
-
-This section lists those issues that are known about.
-
-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.
-
-If you don't see a component listed here, then we don't have any known
-issues with it.
-
-[h4 tgamma]
-
-* Can the __lanczos be optimized any further? (low priority)
-
-[h4 Incomplete Beta]
-
-* Investigate Didonato and Morris' asymptotic expansion for large a and b
-(medium priority).
-
-[h4 Inverse Gamma]
-
-* Investigate whether we can skip iteration altogether if the first approximation
-is good enough (Medium Priority).
-
-[h4 Polynomials]
-
-* 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).
-
-[h4 Elliptic Integrals]
-
-* 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).
-* [para Carlson's algorithms (mainly R[sub J]) are somewhat prone to
-internal overflow/underflow when the arguments are very large or small.
-The homogeneity relations:]
-[para R[sub F](ka, kb, kc) = k[super -1/2] R[sub F](a, b, c)]
-[para and]
-[para R[sub J](ka, kb, kc, kr) = k[super -3/2] R[sub J](a, b, c, r)]
-[para could be used to sidestep trouble here: provided the problem domains
-can be accurately identified. (Medium Priority).]
-* Carlson's R[sub C] 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).
-* Should we add an implementation of Carlson's R[sub G]? It's not
-required for the Legendre form integrals, but some people may find it
-useful (Low Priority).
-* There are a several other integrals: D([phi], k), Z([beta], k),
-[Lambda][sub 0]([beta], k) and Bulirsch's ['el] functions that could
-be implemented using Carlson's integrals (Low Priority).
-* 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).
-* There is a sub-domain of __ellint_3 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).
-
-[h4 Inverse Hyperbolic Functions]
-
-* These functions are inherited from previous Boost versions,
-before __log1p became widely available. Would they be better expressed
-in terms of this function? This is probably only an issue
-for very high precision types (Low Priority).
-
-[h4 Statistical distributions]
-
-* Student's t Perhaps switch to normal distribution as a better approximation for very large degrees of freedom?
-
-[endsect][/section:issues Known Issues, and Todo List]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/laguerre.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/laguerre.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,175 +0,0 @@
-[section:laguerre Laguerre (and Associated) Polynomials]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/laguerre.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` laguerre(unsigned n, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` laguerre(unsigned n, T x, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` laguerre(unsigned n, unsigned m, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` laguerre(unsigned n, unsigned m, T x, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` laguerre_next(unsigned n, unsigned m, T1 x, T2 Ln, T3 Lnm1);
-
-
- }} // namespaces
-
-[h4 Description]
-
-The return type of these functions is computed using the __arg_pomotion_rules:
-note than when there is a single template argument the result is the same type
-as that argument or `double` if the template argument is an integer type.
-
-[optional_policy]
-
- template <class T>
- ``__sf_result`` laguerre(unsigned n, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` laguerre(unsigned n, T x, const ``__Policy``&);
-
-Returns the value of the Laguerre Polynomial of order /n/ at point /x/:
-
-[equation laguerre_0]
-
-The following graph illustrates the behaviour of the first few
-Laguerre Polynomials:
-
-[$../graphs/laguerre.png]
-
- template <class T>
- ``__sf_result`` laguerre(unsigned n, unsigned m, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` laguerre(unsigned n, unsigned m, T x, const ``__Policy``&);
-
-Returns the Associated Laguerre polynomial of degree /n/
-and order /m/ at point /x/:
-
-[equation laguerre_1]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
-
-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 /x/, and for rising /n/.
-
-[equation laguerre_2]
-
-For example we could produce a vector of the first 10 polynomial
-values using:
-
- double x = 0.5; // Abscissa value
- vector<double> v;
- v.push_back(laguerre(0, x)).push_back(laguerre(1, x));
- for(unsigned l = 1; l < 10; ++l)
- v.push_back(laguerre_next(l, x, v[l], v[l-1]));
-
-Formally the arguments are:
-
-[variablelist
-[[n][The degree /n/ of the last polynomial calculated.]]
-[[x][The abscissa value]]
-[[Ln][The value of the polynomial evaluated at degree /n/.]]
-[[Lnm1][The value of the polynomial evaluated at degree /n-1/.]]
-]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` laguerre_next(unsigned n, unsigned m, T1 x, T2 Ln, T3 Lnm1);
-
-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 /x/, and for rising degree /n/.
-
-[equation laguerre_3]
-
-For example we could produce a vector of the first 10 polynomial
-values using:
-
- double x = 0.5; // Abscissa value
- int m = 10; // order
- vector<double> v;
- v.push_back(laguerre(0, m, x)).push_back(laguerre(1, m, x));
- for(unsigned l = 1; l < 10; ++l)
- v.push_back(laguerre_next(l, m, x, v[l], v[l-1]));
-
-Formally the arguments are:
-
-[variablelist
-[[n][The degree of the last polynomial calculated.]]
-[[m][The order of the Associated Polynomial.]]
-[[x][The abscissa value.]]
-[[Ln][The value of the polynomial evaluated at degree /n/.]]
-[[Lnm1][The value of the polynomial evaluated at degree /n-1/.]]
-]
-
-[h4 Accuracy]
-
-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 __zero_error.
-
-[table Peak Errors In the Laguerre Polynomial
-[[Significand Size] [Platform and Compiler] [Errors in range
-
-0 < l < 20] ]
-[[53] [Win32, Visual C++ 8] [Peak=3000 Mean=185] ]
-[[64] [SUSE Linux IA32, g++ 4.1] [Peak=1x10[super 4] Mean=828]]
-[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=1x10[super 4] Mean=828] ]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=680 Mean=40]]
-]
-
-[table Peak Errors In the Associated Laguerre Polynomial
-[[Significand Size] [Platform and Compiler] [Errors in range
-
-0 < l < 20] ]
-[[53] [Win32, Visual C++ 8] [Peak=433 Mean=11]]
-[[64] [SUSE Linux IA32, g++ 4.1] [Peak=61.4 Mean=19.5]]
-[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=61.4 Mean=19.5] ]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=540 Mean=13.94] ]
-]
-
-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.
-
-[h4 Testing]
-
-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
-[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision.
-
-[h4 Implementation]
-
-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.
-
-[endsect][/section:beta_function The Beta Function]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/lanczos.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/lanczos.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,246 +0,0 @@
-[section:lanczos The Lanczos Approximation]
-
-[h4 Motivation]
-
-['Why base gamma and gamma-like functions on the Lanczos approximation?]
-
-First of all I should make clear that for the gamma function
-over real numbers (as opposed to complex ones)
-the Lanczos approximation (See [@http://en.wikipedia.org/wiki/Lanczos_approximation Wikipedia or ]
-[@http://mathworld.wolfram.com/LanczosApproximation.html Mathworld])
-appears to offer no clear advantage over more traditional methods such as
-[@http://en.wikipedia.org/wiki/Stirling_approximation Stirling's approximation].
-__pugh 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:
-
-* The approximation has an easy to compute truncation error that holds for
-all /z > 0/. In practice that means we can use the same approximation for all
-/z > 0/, and be certain that no matter how large or small /z/ is, the truncation
-error will /at worst/ be bounded by some finite value.
-* 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.
-
-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.
-
-As the simplest example, consider the ratio of two gamma functions: one could
-compute the result via lgamma:
-
- exp(lgamma(a) - lgamma(b));
-
-However, even if lgamma is uniformly accurate to 0.5ulp, the worst case
-relative error in the above can easily be shown to be:
-
- Erel > a * log(a)/2 + b * log(b)/2
-
-For small /a/ and /b/ that's not a problem, but to put the relationship another
-way: ['each time a and b increase in magnitude by a factor of 10, at least one
-decimal digit of precision will be lost.]
-
-In contrast, by analytically combining like power
-terms in a ratio of Lanczos approximation's, these errors can be virtually eliminated
-for small /a/ and /b/, and kept under control for very large (or very small
-for that matter) /a/ and /b/. 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 __beta function for
-an example of this method in practice. The incomplete
-[link math_toolkit.special.sf_gamma.igamma gamma_p gamma] and
-[link math_toolkit.special.sf_beta.ibeta_function beta] functions
-use similar analytic combinations of power terms, to combine gamma and beta
-functions divided by large powers into single (simpler) expressions.
-
-[h4 The Approximation]
-
-The Lanczos Approximation to the Gamma Function is given by:
-
-[equation lanczos0]
-
-Where S[sub g](z) is an infinite sum, that is convergent for all z > 0,
-and /g/ is an arbitrary parameter that controls the "shape" of the
-terms in the sum which is given by:
-
-[equation lanczos0a]
-
-With individual coefficients defined in closed form by:
-
-[equation lanczos0b]
-
-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).
-
-The Lanczos approximation is therefore often written in partial fraction form
-with the leading constants absorbed by the coefficients in the sum:
-
-[equation lanczos1]
-
-where:
-
-[equation lanczos2]
-
-Again parameter /g/ is an arbitrarily chosen constant, and /N/ is an arbitrarily chosen
-number of terms to evaluate in the "Lanczos sum" part.
-
-[note
-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 __godfrey, but not __pugh, so take care
-when referring to the literature in this field.]
-
-[h4 Computing the Coefficients]
-
-The coefficients C0..CN-1 need to be computed from /N/ and /g/
-at high precision, and then stored as part of the program.
-Calculation of the coefficients is performed via the method of __godfrey;
-let the constants be contained in a column vector P, then:
-
-P = B D C F
-
-where B is an NxN matrix:
-
-[equation lanczos4]
-
-D is an NxN matrix:
-
-[equation lanczos3]
-
-C is an NxN matrix:
-
-[equation lanczos5]
-
-and F is an N element column vector:
-
-[equation lanczos6]
-
-Note than the matrices B, D and C contain all integer terms and depend
-only on /N/, this product should be computed first, and then multiplied
-by /F/ as the last step.
-
-[h4 Choosing the Right Parameters]
-
-The trick is to choose
-/N/ and /g/ to give the desired level of accuracy: choosing a small value for
-/g/ leads to a strictly convergent series, but one which converges only slowly.
-Choosing a larger value of /g/ causes the terms in the series to be large
-and\/or divergent for about the first /g-1/ terms, and to then suddenly converge
-with a "crunch".
-
-__pugh has determined the optimal
-value of /g/ for /N/ in the range /1 <= N <= 60/: 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 /and/ 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.
-
-[table Optimal choices for N and g when computing with guard digits (source: Pugh)
-[[Significand Size] [N] [g][Max Error]]
-[[24] [6] [5.581][9.51e-12]]
-[[53][13][13.144565][9.2213e-23]]
-]
-
-The alternative described by __godfrey is to perform an exhaustive
-search of the /N/ and /g/ parameter space to determine the optimal combination for
-a given /p/ digit floating-point type. Repeating this work found a good
-approximation for double precision arithmetic (close to the one __godfrey 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.
-
-__pugh 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]) in the
-Lanczos series S[sub g](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.
-
-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 /g/, but avoiding cancellation errors in the evaluation
-requires a small /g/.
-
-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 /they are all positive/. 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 __pugh (just slightly larger /N/ and slightly
-smaller /g/ for a given precision than __pugh 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 /N/ than would otherwise be required,
-so fewer floating point operations may be required overall.
-
-The following table shows the optimal values for /N/ and /g/ 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 /g/ may be possible.
-Errors given in the table
-are estimates of the error due to truncation of the Lanczos infinite series
-to /N/ 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 /N/ and /g/ occurred when the estimated truncation error
-almost exactly matches the machine epsilon for the type in question.
-
-[table Optimum value for N and g when computing at fixed precision
-[[Significand Size][Platform/Compiler Used][N][g][Max Truncation Error]]
-[[24][Win32, VC++ 7.1] [6] [1.428456135094165802001953125][9.41e-007]]
-[[53][Win32, VC++ 7.1] [13] [6.024680040776729583740234375][3.23e-016]]
-[[64][Suse Linux 9 IA64, gcc-3.3.3] [17] [12.2252227365970611572265625][2.34e-024]]
-[[116][HP Tru64 Unix 5.1B \/ Alpha, Compaq C++ V7.1-006] [24] [20.3209821879863739013671875][4.75e-035]]
-]
-
-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):
-
-[equation lanczos7]
-
-This form is more convenient for calculating lgamma, but for the gamma
-function the division by /e/ 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.
-
-[h4 References]
-
-# [#godfrey]Paul Godfrey, [@http://my.fit.edu/~gabdo/gamma.txt "A note on the computation of the convergent
-Lanczos complex Gamma approximation"].
-# [#pugh]Glendon Ralph Pugh,
-[@http://bh0.physics.ubc.ca/People/matt/Doc/ThesesOthers/Phd/pugh.pdf
-"An Analysis of the Lanczos Gamma Approximation"],
-PhD Thesis November 2004.
-# Viktor T. Toth,
-[@http://www.rskey.org/gamma.htm "Calculators and the Gamma Function"].
-# Mathworld, [@http://mathworld.wolfram.com/LanczosApproximation.html
-The Lanczos Approximation].
-
-[endsect][/section:lanczos The Lanczos Approximation]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/latin1_symbols.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/latin1_symbols.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,111 +0,0 @@
-[/ Symbols and accented letters from Latin-1]
-[/ File Latin1_symbols.qbk]
-[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html ]
-[/ based on table Copyright </copyright.html> 1998-2006 Liam Quinn.]
-[/ Glyphs <http://www.unicode.org/charts/> of the characters ]
-[/ are available at the Unicode Consortium <http://www.unicode.org/>. ]
-
-[template nbsp[]'''&#xA0;'''] [/ no-break space = non-breaking space]
-[template iexcl[]'''&#xA1;'''] [/ inverted exclamation mark ]
-[template cent[]'''&#xA2;'''] [/ cent sign ]
-[template pound[]'''&#xA3;'''] [/ pound sign ]
-[template curren[]'''&#xA4;'''] [/ currency sign ]
-[template yen[]'''&#xA5;'''] [/ yen sign = yuan sign ]
-[template brvbar[]'''&#xA6;'''] [/ broken vertical bar ]
-[template sectsign[]'''&#xA7;'''] [/ section sign ]
-[template uml[]'''&#xA8;'''] [/ diaeresis ]
-[template copy[]'''&#xA9;'''] [/ copyright ]
-[template ordf[]'''&#xAA;'''] [/ feminine ordinal indicator ]
-[template laquo[]'''&#xAB;'''] [/ left-pointing double angle quotation mark = left pointing guillemet ]
-[template not[]'''&#xAC;'''] [/ not sign ]
-[template shy[]'''&#xAD;'''] [/ soft hyphen = discretionary hyphen ]
-[template reg[]'''&#xAE;'''] [/ registered sign = registered trade mark sign ]
-[template macron[]'''&#xAF;'''] [/ macron = spacing macron = overline = APL overbar ]
-[template deg[]'''&#xB0;'''] [/ degree sign ]
-[template plusmn[]'''&#xB1;'''] [/ plus-minus sign = plus-or-minus sign ]
-[template sup2[]'''&#xB2;'''] [/ superscript two = superscript digit two = squared ]
-[template cubed[]'''&#xB3;'''] [/ superscript three = superscript digit three = cubed ]
-[template acute[]'''&#xB4;'''] [/ acute accent = spacing acute ]
-[template micro[]'''&#xB5;'''] [/ micro sign ]
-[template para[]'''&#xB6;'''] [/ pilcrow sign = paragraph sign ]
-[template middot[]'''&#xB7;'''] [/ middle dot = Georgian comma = Greek middle dot ]
-[template cedil[]'''&#xB8;'''] [/ cedilla = spacing cedilla ]
-[template sup1[]'''&#xB9;'''] [/ superscript one = superscript digit one ]
-[template ordm[]'''&#xBA;'''] [/ masculine ordinal indicator ]
-[template raquo[]'''&#xBB;'''] [/ right-pointing double angle quotation mark = right pointing guillemet ]
-[template frac14[]'''&#xBC;'''] [/ vulgar fraction one quarter = fraction one quarter ]
-[template frac12[]'''&#xBD;'''] [/ vulgar fraction one half = fraction one half ]
-[template frac34[]'''&#xBE;'''] [/vulgar fraction three quarters = fraction three quarters ]
-[template iquest[]'''&#xBF;'''] [/ inverted question mark = turned question mark ]
-[template Agrave[]'''&#xC0;'''] [/ Latin capital letter A with grave = Latin capital letter A grave ]
-[template Aacute[]'''&#xC1;'''] [/ Latin capital letter A with acute = Latin capital letter A acute ]
-[template Acirc[]'''&#xC2;'''] [/ Latin capital letter A with circumflex ]
-[template Atilde[]'''&#xC3;'''] [/Latin capital letter A with tilde ]
-[template Auml[]'''&#xC4;'''] [/ Latin capital letter A with diaeresis ]
-[template Aring[]'''&#xC5;'''] [/ Latin capital letter A with ring above = Latin capital letter A ring ]
-[template AElig[]'''&#xC6;'''] [/ Latin capital letter AE = Latin capital ligature AE ]
-[template Ccedil[]'''&#xC7;'''] [/ Latin capital letter C with cedilla ]
-[template Egrave[]'''&#xC8;'''] [/ Latin capital letter E with grave ]
-[template Eacute[]'''&#xC9;'''] [/ Latin capital letter E with acute ]
-[template Ecirc[]'''&#xCA;'''] [/ Latin capital letter E with circumflex ]
-[template Euml[]'''&#xCB;'''] [/ Latin capital letter E with diaeresis ]
-[template Igrave[]'''&#xCC;'''] [/ Latin capital letter I with grave ]
-[template Iacute[]'''&#xCD;'''] [/ Latin capital letter I with acute ]
-[template Icirc[]'''&#xCE;'''] [/ Latin capital letter I with circumflex ]
-[template Iuml[]'''&#xCF;'''] [/ Latin capital letter I with diaeresis ]
-[template ETH[]'''&#xD0;'''] [/ Latin capital letter ETH ]
-[template Ntilde[]'''&#xD1;'''] [/ Latin capital letter N with tilde ]
-[template Ograve[]'''&#xD2;'''] [/ Latin capital letter O with grave]
-[template Oacute[]'''&#xD3;'''] [/ Latin capital letter O with acute ]
-[template Ocirc[]'''&#xD4;'''] [/ Latin capital letter O with circumflex ]
-[template Otilde[]'''&#xD5;'''] [/ Latin capital letter O with tilde ]
-[template Ouml[]'''&#xD6;'''] [/ Latin capital letter O with diaeresis ]
-[template times[]'''&#xD7;'''] [/ multiplication sign ]
-[template Oslash[]'''&#xD8;'''] [/ Latin capital letter O with stroke = Latin capital letter O slash ]
-[template Ugrave[]'''&#xD9;'''] [/ Latin capital letter U with grave ]
-[template Uacute[]'''&#xDA;'''] [/ Latin capital letter U with acute ]
-[template Ucirc[]'''&#xDB;'''] [/ Latin capital letter U with circumflex ]
-[template Uuml[]'''&#xDC;'''] [/ Latin capital letter U with diaeresis ]
-[template Yacute[]'''&#xDD;'''] [/ Latin capital letter Y with acute ]
-[template THORN[]'''&#xDE;'''] [/ Latin capital letter THORN ]
-[template szlig[]'''&#xDF;'''] [/ Latin small letter sharp s = ess-zed ]
-[template agrave[]'''&#xE0;'''] [/ Latin small letter a with grave = Latin small letter a grave ]
-[template aacute[]'''&#xE1;'''] [/ Latin small letter a with acute ]
-[template acirc[]'''&#xE2;'''] [/ Latin small letter a with circumflex ]
-[template atilde[]'''&#xE3;'''] [/ Latin small letter a with tilde ]
-[template auml[]'''&#xE4;'''] [/ Latin small letter a with diaeresis ]
-[template aring[]'''&#xE5;'''] [/ Latin small letter a with ring above = Latin small letter a ring ]
-[template aelig[]'''&#xE6;'''] [/ Latin small letter ae = Latin small ligature ae ]
-[template ccedil[]'''&#xE7;'''] [/ Latin small letter c with cedilla ]
-[template egrave[]'''&#xE8;'''] [/ Latin small letter e with grave ]
-[template eacute[]'''&#xE9;'''] [/ Latin small letter e with acute ]
-[template ecirc[]'''&#xEA;'''] [/ Latin small letter e with circumflex ]
-[template euml[]'''&#xEB;'''] [/ Latin small letter e with diaeresis ]
-[template igrave[]'''&#xEC;'''] [/ Latin small letter i with grave ]
-[template iacute[]'''&#xED;'''] [/ Latin small letter i with acute ]
-[template icirc[]'''&#xEE;'''] [/ Latin small letter i with circumflex ]
-[template iuml[]'''&#xEF;'''] [/ Latin small letter i with diaeresis ]
-[template eth[]'''&#xF0;'''] [/ Latin small letter eth ]
-[template ntilde[]'''&#xF1;'''] [/ Latin small letter n with tilde ]
-[template ograve[]'''&#xF2;'''] [/Latin small letter o with grave ]
-[template oacute[]'''&#xF3;'''] [/ Latin small letter o with acute ]
-[template ocirc[]'''&#xF4;'''] [/ Latin small letter o with circumflex ]
-[template otilde[]'''&#xF5;'''] [/ Latin small letter o with tilde ]
-[template ouml[]'''&#xF6;'''] [/ Latin small letter o with diaeresis ]
-[template divide[]'''&#xF7;'''] [/ division sign ]
-[template oslash[]'''&#xF8;'''] [/ Latin small letter o with stroke = Latin small letter o slash ]
-[template ugrave[]'''&#xF9;'''] [/ Latin small letter u with grave ]
-[template uacute[]'''&#xFa;'''] [/ Latin small letter u with acute ]
-[template ucirc[]'''&#xFB;'''] [/ Latin small letter u with circumflex ]
-[template uuml[]'''&#xFC;'''] [/ Latin small letter u with diaeresis ]
-[template yacute[]'''&#xFD;'''] [/ Latin small letter y with acute ]
-[template thorn[]'''&#xFE;'''] [/ Latin small letter thorn ]
-[template yuml[]'''&#xFF;'''] [/ Latin small letter y with diaeresis ]
-
-[/ File Latin1_symbols.qbk
-Copyright 2007 Paul A. Bristow.
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/legendre.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/legendre.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,252 +0,0 @@
-[section:legendre Legendre (and Associated) Polynomials]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/legendre.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` legendre_p(int n, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` legendre_p(int n, T x, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` legendre_p(int n, int m, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` legendre_p(int n, int m, T x, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` legendre_q(unsigned n, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` legendre_q(unsigned n, T x, const ``__Policy``&);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
-
- template <class T1, class T2, class T3>
- ``__sf_result`` legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
-
-
- }} // namespaces
-
-The return type of these functions is computed using the __arg_pomotion_rules:
-note than when there is a single template argument the result is the same type
-as that argument or `double` if the template argument is an integer type.
-
-[optional_policy]
-
-[h4 Description]
-
- template <class T>
- ``__sf_result`` legendre_p(int l, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` legendre_p(int l, T x, const ``__Policy``&);
-
-Returns the Legendre Polynomial of the first kind:
-
-[equation legendre_0]
-
-Requires -1 <= x <= 1, otherwise returns the result of __domain_error.
-
-Negative orders are handled via the reflection formula:
-
-P[sub -l-1](x) = P[sub l](x)
-
-The following graph illustrates the behaviour of the first few
-Legendre Polynomials:
-
-[$../graphs/legendre_p1.png]
-
- template <class T>
- ``__sf_result`` legendre_p(int l, int m, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` legendre_p(int l, int m, T x, const ``__Policy``&);
-
-Returns the associated Legendre polynomial of the first kind:
-
-[equation legendre_1]
-
-Requires -1 <= x <= 1, otherwise returns the result of __domain_error.
-
-Negative values of /l/ and /m/ are handled via the identity relations:
-
-[equation legendre_3]
-
-[caution The definition of the associated Legendre polynomial used here
-includes a leading Condon-Shortley phase term of (-1)[super m]. This
-matches the definition given by Abramowitz and Stegun (8.6.6) and that
-used by [@http://mathworld.wolfram.com/LegendrePolynomial.html Mathworld]
-and [@http://documents.wolfram.com/mathematica/functions/LegendreP
-Mathematica's LegendreP function]. 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.
-
-See:
-
-[@http://mathworld.wolfram.com/LegendrePolynomial.html
-Weisstein, Eric W. "Legendre Polynomial."
-From MathWorld--A Wolfram Web Resource].
-
-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.
- ]
-
- template <class T>
- ``__sf_result`` legendre_q(unsigned n, T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` legendre_q(unsigned n, T x, const ``__Policy``&);
-
-Returns the value of the Legendre polynomial that is the second solution
-to the Legendre differential equation, for example:
-
-[equation legendre_2]
-
-Requires -1 <= x <= 1, otherwise __domain_error is called.
-
-The following graph illustrates the first few Legendre functions of the
-second kind:
-
-[$../graphs/legendre_q.png]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
-
-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 /x/, and for rising /l/. This recurrence
-relation holds for Legendre Polynomials of both the first and second kinds.
-
-[equation legendre_4]
-
-For example we could produce a vector of the first 10 polynomial
-values using:
-
- double x = 0.5; // Abscissa value
- vector<double> v;
- v.push_back(legendre_p(0, x)).push_back(legendre_p(1, x));
- for(unsigned l = 1; l < 10; ++l)
- v.push_back(legendre_next(l, x, v[l], v[l-1]));
-
-Formally the arguments are:
-
-[variablelist
-[[l][The degree of the last polynomial calculated.]]
-[[x][The abscissa value]]
-[[Pl][The value of the polynomial evaluated at degree /l/.]]
-[[Plm1][The value of the polynomial evaluated at degree /l-1/.]]
-]
-
- template <class T1, class T2, class T3>
- ``__sf_result`` legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
-
-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 /x/, and for rising /l/.
-
-[equation legendre_5]
-
-For example we could produce a vector of the first m+10 polynomial
-values using:
-
- double x = 0.5; // Abscissa value
- int m = 10; // order
- vector<double> v;
- v.push_back(legendre_p(m, m, x)).push_back(legendre_p(1 + m, m, x));
- for(unsigned l = 1 + m; l < m + 10; ++l)
- v.push_back(legendre_next(l, m, x, v[l], v[l-1]));
-
-Formally the arguments are:
-
-[variablelist
-[[l][The degree of the last polynomial calculated.]]
-[[m][The order of the Associated Polynomial.]]
-[[x][The abscissa value]]
-[[Pl][The value of the polynomial evaluated at degree /l/.]]
-[[Plm1][The value of the polynomial evaluated at degree /l-1/.]]
-]
-
-[h4 Accuracy]
-
-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 __zero_error.
-
-[table Peak Errors In the Legendre P Function
-[[Significand Size] [Platform and Compiler] [Errors in range
-
-0 < l < 20] [Errors in range
-
-20 < l < 120]]
-[[53] [Win32, Visual C++ 8] [Peak=211 Mean=20] [Peak=300 Mean=33]]
-[[64] [SUSE Linux IA32, g++ 4.1] [Peak=70 Mean=10] [Peak=700 Mean=60]]
-[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=70 Mean=10] [Peak=700 Mean=60]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=35 Mean=6] [Peak=292 Mean=41]]
-]
-
-[table Peak Errors In the Associated Legendre P Function
-[[Significand Size] [Platform and Compiler] [Errors in range
-
-0 < l < 20] ]
-[[53] [Win32, Visual C++ 8] [Peak=1200 Mean=7]]
-[[64] [SUSE Linux IA32, g++ 4.1] [Peak=80 Mean=5]]
-[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=80 Mean=5] ]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=42 Mean=4] ]
-]
-
-[table Peak Errors In the Legendre Q Function
-[[Significand Size] [Platform and Compiler] [Errors in range
-
-0 < l < 20] [Errors in range
-
-20 < l < 120]]
-[[53] [Win32, Visual C++ 8] [Peak=50 Mean=7] [Peak=4600 Mean=370]]
-[[64] [SUSE Linux IA32, g++ 4.1] [Peak=51 Mean=8] [Peak=6000 Mean=480]]
-[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=51 Mean=8] [Peak=6000 Mean=480]]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=90 Mean=10] [Peak=1700 Mean=140]]
-]
-
-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.
-
-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.
-
-[h4 Testing]
-
-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
-[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision.
-
-[h4 Implementation]
-
-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.
-
-[endsect][/section:beta_function The Beta Function]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/lgamma.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/lgamma.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,217 +0,0 @@
-[section:lgamma Log Gamma]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/gamma.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` lgamma(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` lgamma(T z, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` lgamma(T z, int* sign);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` lgamma(T z, int* sign, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-The [@http://en.wikipedia.org/wiki/Gamma_function lgamma function] is defined by:
-
-[equation lgamm1]
-
-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).
-
-[optional_policy]
-
-[$../graphs/lgamma.png]
-
-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 __lanczos. In practice, any built-in
-floating-point type you will encounter has an appropriate __lanczos
-defined for it. It is also possible, given enough machine time, to generate
-further __lanczos's using the program libs/math/tools/lanczos_generator.cpp.
-
-The return type of these functions is computed using the __arg_pomotion_rules:
-the result is of type `double` if T is an integer type, or type T otherwise.
-
-[h4 Accuracy]
-
-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, __glibc, __hpc and
-__cephes libraries. Unless otherwise specified any
-floating point type that is narrower than the one shown will have
-__zero_error.
-
-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.
-
-[table
-[[Significand Size] [Platform and Compiler] [Factorials and Half factorials] [Values Near Zero] [Values Near 1 or 2] [Values Near a Negative Pole]]
-[[53] [Win32 Visual C++ 8]
-[Peak=0.88 Mean=0.14
-
-(GSL=33) (__cephes=1.5)]
-[Peak=0.96 Mean=0.46
-
-(GSL=5.2) (__cephes=1.1)]
-[Peak=0.86 Mean=0.46
-
-(GSL=1168) (__cephes~500000)]
-[Peak=4.2 Mean=1.3
-
-(GSL=25) (__cephes=1.6)] ]
-[[64] [Linux IA32 / GCC]
-[Peak=1.9 Mean=0.43
-
-(__glibc Peak=1.7 Mean=0.49)]
-[Peak=1.4 Mean=0.57
-
-(__glibc Peak= 0.96 Mean=0.54)]
-[Peak=0.86 Mean=0.35
-
-(__glibc Peak=0.74 Mean=0.26)]
-
-[Peak=6.0 Mean=1.8
-
-(__glibc Peak=3.0 Mean=0.86)] ]
-[[64] [Linux IA64 / GCC]
-[Peak=0.99 Mean=0.12
-
-(__glibc Peak 0)]
-
-[Pek=1.2 Mean=0.6
-
-(__glibc Peak 0)]
-[Peak=0.86 Mean=0.16
-
-(__glibc Peak 0)]
-[Peak=2.3 Mean=0.69
-
-(__glibc Peak 0)] ]
-[[113] [HPUX IA64, aCC A.06.06]
-[Peak=0.96 Mean=0.13
-
-(__hpc Peak 0)]
-[Peak=0.99 Mean=0.53
-
-(__hpc Peak 0)]
-[Peak=0.9 Mean=0.4
-
-(__hpc Peak 0)]
-[Peak=3.0 Mean=0.9
-
-(__hpc Peak 0)] ]
-]
-
-[h4 Testing]
-
-The main tests for this function involve comparisons against the logs of
-the factorials which can be independently calculated to very high accuracy.
-
-Random tests in key problem areas are also used.
-
-[h4 Implementation]
-
-The generic version of this function is implemented by combining the series and
-continued fraction representations for the incomplete gamma function:
-
-[equation lgamm2]
-
-where /l/ is an arbitrary integration limit: choosing [^l = max(10, a)]
-seems to work fairly well. For negative /z/ the logarithm version of the
-reflection formula is used:
-
-[equation lgamm3]
-
-For types of known precision, the __lanczos is used, a traits class
-`boost::math::lanczos::lanczos_traits` maps type T to an appropriate
-approximation. The logarithmic version of the __lanczos is:
-
-[equation lgamm4]
-
-Where L[sub e,g][space] is the Lanczos sum, scaled by e[super g].
-
-As before the reflection formula is used for /z < 0/.
-
-When z is very near 1 or 2, then the logarithmic version of the __lanczos
-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).
-
-For types with up to 113 bits of precision
-(up to and including 128-bit long doubles), root-preserving
-rational approximations [jm_rationals] are used
-over the intervals [1,2] and [2,3]. Over the interval [2,3] the approximation
-form used is:
-
- lgamma(z) = (z-2)(z+1)(Y + R(z-2));
-
-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:
-
- lgamma(z+1) = log(z) + lgamma(z);
-
-Over the interval [1,2] two approximations have to be used, one for small z uses:
-
- lgamma(z) = (z-1)(z-2)(Y + R(z-1));
-
-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:
-
- lgamma(z) = (2-z)(1-z)(Y + R(2-z));
-
-Finally for z < 1 the recurrence relation can be used to move to z > 1:
-
- lgamma(z) = lgamma(z+1) - log(z);
-
-Note that while this involves a subtraction, it appears not
-to suffer from cancellation error: as z decreases from 1
-the `-log(z)` term grows positive much more
-rapidly than the `lgamma(z+1)` term becomes negative. So in this
-specific case, significant digits are preserved, rather than cancelled.
-
-For other types which do have a __lanczos defined for them
-the current solution is as follows: imagine we
-balance the two terms in the __lanczos by dividing the power term by its value
-at /z = 1/, and then multiplying the Lanczos coefficients by the same value.
-Now each term will take the value 1 at /z = 1/ 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 /z = 1/), we obtain
-a new summation that can be also be fed into log1p. Crucially, all of the
-terms tend to zero, as /z -> 1/:
-
-[equation lgamm5]
-
-The C[sub k][space] terms in the above are the same as in the __lanczos.
-
-A similar rearrangement can be performed at /z = 2/:
-
-[equation lgamm6]
-
-[endsect][/section:lgamma The Log Gamma Function]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/license.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/license.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,6 +0,0 @@
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/math.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/math.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,404 +0,0 @@
-[article Math Toolkit
- [quickbook 1.4]
- [copyright 2006-2007 John Maddock, Paul A. Bristow, Hubert Holin and Xiaogang Zhang]
- [purpose ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22]
- [license
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- [@http://www.boost.org/LICENSE_1_0.txt])
- ]
- [authors [Maddock, John], [Bristow, Paul A.], [Holin, Hubert], [Zhang, Xiaogang]]
- [category math]
- [purpose mathematics]
- [/last-revision $Date$]
-]
-
-[template equation[name] '''<inlinemediaobject>
-<imageobject role="html">
-<imagedata fileref="../equations/'''[name]'''.png"></imagedata>
-</imageobject>
-<imageobject role="print">
-<imagedata fileref="../equations/'''[name]'''.svg"></imagedata>
-</imageobject>
-</inlinemediaobject>''']
-
-[include html4_symbols.qbk] [/ just for testing]
-[/include latin1_symbols.qbk] [/ just for testing]
-[include common_overviews.qbk][/ overviews that appear in more than one place!]
-[include roadmap.qbk]
-
-[def __effects [*Effects: ]]
-[def __formula [*Formula: ]]
-[def __exm1 '''<code>e<superscript>x</superscript> - 1</code>''']
-[def __ex '''<code>e<superscript>x</superscript></code>''']
-[def __te '''2&#x025B;'''] [/small Latin letter open e]
-
-[def __ceilR '''&#x2309;''']
-[def __ceilL '''&#2308;''']
-[def __floorR '''&#x230B;''']
-[def __floorL '''&#x230A;''']
-[def __infin '''&#8734;''']
-[def __integral '''&#8747;''']
-[def __aacute '''&#225;''']
-[def __eacute '''&#233;''']
-[def __quarter '''&#x00BC;''']
-[def __nearequal '''&#x224A;''']
-[def __quarter '''&#x00BC;''']
-[def __space '''&#8203;''']
-
-[def __NTL_RR [@http://shoup.net/ntl/doc/RR.txt NTL::RR]]
-[def __NTL_quad_float [@http://shoup.net/ntl/doc/quad_float.txt NTL::quad_float]]
-
-[def __godfrey [link godfrey Godfrey]]
-[def __pugh [link pugh Pugh]]
-
-[def __caution This is now an official Boost library, but remains a library under
- construction, the code is fully functional and robust, but
- interfaces, library structure, and function and distribution names
- may still be changed without notice.]
-
-[template tr1[] [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Technical Report on C++ Library Extensions]]
-[template jm_rationals[] [link math_toolkit.backgrounders.implementation.rational_approximations_used devised by JM]]
-[def __domain_error [link domain_error domain_error]]
-[def __pole_error [link pole_error pole_error]]
-[def __overflow_error [link overflow_error overflow_error]]
-[def __underflow_error [link underflow_error underflow_error]]
-[def __denorm_error [link denorm_error denorm_error]]
-[def __evaluation_error [link evaluation_error evaluation_error]]
-[def __checked_narrowing_cast [link checked_narrowing_cast checked_narrowing_cast]]
-
-[def __arg_pomotion_rules [link math_toolkit.main_overview.result_type ['result type calculation rules]]]
-[def __sf_result [link math_toolkit.main_overview.result_type ['calculated-result-type]]]
-
-[/ The following macros expand to links to the various special functions
-and use the function's name as the link text]
-
-[/Misc]
-[def __lanczos [link math_toolkit.backgrounders.lanczos Lanczos approximation]]
-[def __zero_error [link zero_error effectively zero error]]
-[def __relative_error [link math_toolkit.backgrounders.relative_error relative zero error]]
-
-[/gammas]
-[def __lgamma [link math_toolkit.special.sf_gamma.lgamma lgamma]]
-[def __digamma [link math_toolkit.special.sf_gamma.digamma digamma]]
-[def __tgamma_ratio [link math_toolkit.special.sf_gamma.gamma_ratios tgamma_ratio]]
-[def __tgamma_delta_ratio [link math_toolkit.special.sf_gamma.gamma_ratios tgamma_delta_ratio]]
-[def __tgamma [link math_toolkit.special.sf_gamma.tgamma tgamma]]
-[def __tgamma1pm1 [link math_toolkit.special.sf_gamma.tgamma tgamma1pm1]]
-[def __tgamma_lower [link math_toolkit.special.sf_gamma.igamma tgamma_lower]]
-[def __gamma_p [link math_toolkit.special.sf_gamma.igamma gamma_p]]
-[def __gamma_q [link math_toolkit.special.sf_gamma.igamma gamma_q]]
-[def __gamma_q_inv [link math_toolkit.special.sf_gamma.igamma_inv gamma_q_inv]]
-[def __gamma_p_inv [link math_toolkit.special.sf_gamma.igamma_inv gamma_p_inv]]
-[def __gamma_q_inva [link math_toolkit.special.sf_gamma.igamma_inv gamma_q_inva]]
-[def __gamma_p_inva [link math_toolkit.special.sf_gamma.igamma_inv gamma_p_inva]]
-[def __gamma_p_derivative [link math_toolkit.special.sf_gamma.gamma_derivatives gamma_p_derivative]]
-
-[/factorials]
-[def __factorial [link math_toolkit.special.factorials.sf_factorial factorial]]
-[def __unchecked_factorial [link math_toolkit.special.factorials.sf_factorial unchecked_factorial]]
-[def __max_factorial [link math_toolkit.special.factorials.sf_factorial max_factorial]]
-[def __double_factorial [link math_toolkit.special.factorials.sf_double_factorial double_factorial]]
-[def __rising_factorial [link math_toolkit.special.factorials.sf_rising_factorial rising_factorial]]
-[def __falling_factorial [link math_toolkit.special.factorials.sf_falling_factorial falling_factorial]]
-
-[/error functions]
-[def __erf [link math_toolkit.special.sf_erf.error_function erf]]
-[def __erfc [link math_toolkit.special.sf_erf.error_function erfc]]
-[def __erf_inv [link math_toolkit.special.sf_erf.error_inv erf_inv]]
-[def __erfc_inv [link math_toolkit.special.sf_erf.error_inv erfc_inv]]
-
-[/beta functions]
-[def __beta [link math_toolkit.special.sf_beta.beta_function beta]]
-[def __beta3 [link math_toolkit.special.sf_beta.ibeta_function beta]]
-[def __betac [link math_toolkit.special.sf_beta.ibeta_function betac]]
-[def __ibeta [link math_toolkit.special.sf_beta.ibeta_function ibeta]]
-[def __ibetac [link math_toolkit.special.sf_beta.ibeta_function ibetac]]
-[def __ibeta_inv [link math_toolkit.special.sf_beta.ibeta_inv_function ibeta_inv]]
-[def __ibetac_inv [link math_toolkit.special.sf_beta.ibeta_inv_function ibetac_inv]]
-[def __ibeta_inva [link math_toolkit.special.sf_beta.ibeta_inv_function ibeta_inva]]
-[def __ibetac_inva [link math_toolkit.special.sf_beta.ibeta_inv_function ibetac_inva]]
-[def __ibeta_invb [link math_toolkit.special.sf_beta.ibeta_inv_function ibeta_invb]]
-[def __ibetac_invb [link math_toolkit.special.sf_beta.ibeta_inv_function ibetac_invb]]
-[def __ibeta_derivative [link math_toolkit.special.sf_beta.beta_derivative ibeta_derivative]]
-
-[/elliptic integrals]
-[def __ellint_rj [link math_toolkit.special.ellint.ellint_carlson ellint_rj]]
-[def __ellint_rf [link math_toolkit.special.ellint.ellint_carlson ellint_rf]]
-[def __ellint_rc [link math_toolkit.special.ellint.ellint_carlson ellint_rc]]
-[def __ellint_rd [link math_toolkit.special.ellint.ellint_carlson ellint_rd]]
-[def __ellint_1 [link math_toolkit.special.ellint.ellint_1 ellint_1]]
-[def __ellint_2 [link math_toolkit.special.ellint.ellint_2 ellint_2]]
-[def __ellint_3 [link math_toolkit.special.ellint.ellint_3 ellint_3]]
-
-[/Bessel functions]
-[def __cyl_bessel_j [link math_toolkit.special.bessel.bessel cyl_bessel_j]]
-[def __cyl_neumann [link math_toolkit.special.bessel.bessel cyl_neumann]]
-[def __cyl_bessel_i [link math_toolkit.special.bessel.mbessel cyl_bessel_i]]
-[def __cyl_bessel_k [link math_toolkit.special.bessel.mbessel cyl_bessel_k]]
-[def __sph_bessel [link math_toolkit.special.bessel.sph_bessel sph_bessel]]
-[def __sph_neumann [link math_toolkit.special.bessel.sph_bessel sph_neumann]]
-
-[/sinus cardinals]
-[def __sinc_pi [link math_toolkit.special.sinc.sinc_pi sinc_pi]]
-[def __sinhc_pi [link math_toolkit.special.sinc.sinhc_pi sinhc_pi]]
-
-[/Inverse hyperbolics]
-[def __acosh [link math_toolkit.special.inv_hyper.acosh acosh]]
-[def __asinh [link math_toolkit.special.inv_hyper.asinh asinh]]
-[def __atanh [link math_toolkit.special.inv_hyper.atanh atanh]]
-
-[/classify]
-[def __fpclassify [link math_toolkit.special.fpclass fpclassify]]
-[def __isfinite [link math_toolkit.special.fpclass isfinite]]
-[def __isnan [link math_toolkit.special.fpclass isnan]]
-[def __isinf [link math_toolkit.special.fpclass isinf]]
-[def __isnormal [link math_toolkit.special.fpclass isnormal]]
-
-[/powers etc]
-[def __expm1 [link math_toolkit.special.powers.expm1 expm1]]
-[def __log1p [link math_toolkit.special.powers.log1p log1p]]
-[def __cbrt [link math_toolkit.special.powers.cbrt cbrt]]
-[def __sqrt1pm1 [link math_toolkit.special.powers.sqrt1pm1 sqrt1pm1]]
-[def __powm1 [link math_toolkit.special.powers.powm1 powm1]]
-[def __hypot [link math_toolkit.special.powers.hypot hypot]]
-
-[/ distribution non-members]
-[def __cdf [link math.dist.cdf Cumulative Distribution Function]]
-[def __pdf [link math.dist.pdf Probability Density Function]]
-[def __ccdf [link math.dist.ccdf Complement of the Cumulative Distribution Function]]
-[def __quantile [link math.dist.quantile Quantile]]
-[def __quantile_c [link math.dist.quantile_c Quantile from the complement of the probability]]
-[def __mean [link math.dist.mean mean]]
-[def __median [link math.dist.median median]]
-[def __mode [link math.dist.mode mode]]
-[def __skewness [link math.dist.skewness skewness]]
-[def __kurtosis [link math.dist.kurtosis kurtosis]]
-[def __kurtosis_excess [link math.dist.kurtosis_excess kurtosis_excess]]
-[def __variance [link math.dist.variance variance]]
-[def __sd [link math.dist.sd standard deviation]]
-[def __hazard [link math.dist.hazard Hazard Function]]
-[def __chf [link math.dist.chf Cumulative Hazard Function]]
-[def __range [link math.dist.range range]]
-[def __support [link math.dist.support support]]
-
-[/ distribution def names end in distrib to avoid clashes]
-[def __beta_distrib [link math_toolkit.dist.dist_ref.dists.beta_dist Beta Distribution]]
-[def __binomial_distrib [link math_toolkit.dist.dist_ref.dists.binomial_dist Binomial Distribution]]
-[def __cauchy_distrib [link math_toolkit.dist.dist_ref.dists.cauchy_dist Cauchy Distribution]]
-[def __chi_squared_distrib [link math_toolkit.dist.dist_ref.dists.chi_squared_dist Chi Squared Distribution]]
-[def __exp_distrib [link math_toolkit.dist.dist_ref.dists.exp_dist Exponential Distribution]]
-[def __F_distrib [link math_toolkit.dist.dist_ref.dists.f_dist Fisher F Distribution]]
-[def __gamma_distrib [link math_toolkit.dist.dist_ref.dists.gamma_dist Gamma Distribution]]
-[def __lognormal_distrib [link math_toolkit.dist.dist_ref.dists.lognormal_dist Log-normal Distribution]]
-[def __negative_binomial_distrib [link math_toolkit.dist.dist_ref.dists.negative_binomial_dist Negative Binomial Distribution]]
-[def __normal_distrib [link math_toolkit.dist.dist_ref.dists.normal_dist Normal Distribution]]
-[def __poisson_distrib [link math_toolkit.dist.dist_ref.dists.poisson_dist Poisson Distribution]]
-[def __students_t_distrib [link math_toolkit.dist.dist_ref.dists.students_t_dist Students t Distribution]]
-[def __weibull_distrib [link math_toolkit.dist.dist_ref.dists.weibull Weibull Distribution]]
-
-[/links to policy]
-[def __Policy [link math_toolkit.policy Policy]] [/ Used in distribution template specifications]
-[def __policy_section [link math_toolkit.policy Policies]] [/ Used in text to refer too.]
-[def __policy_class [link math_toolkit.policy.pol_ref.pol_ref_ref policies::policy<>]]
-[def __math_undefined [link math_toolkit.policy.pol_ref.assert_undefined mathematically undefined function]]
-[def __policy_ref [link math_toolkit.policy.pol_ref policy reference]]
-[def __math_discrete [link math_toolkit.policy.pol_ref.discrete_quant_ref discrete functions]]
-[def __error_policy [link math_toolkit.policy.pol_ref.error_handling_policies error handling policies]]
-[def __changing_policy_defaults [link math_toolkit.policy.pol_ref.policy_defaults changing policies defaults]]
-[def __user_error_handling [link math_toolkit.policy.pol_tutorial.user_defined_error_policies user error handling]]
-
-[def __usual_accessors __cdf, __pdf, __quantile, __hazard,
- __chf, __mean, __median, __mode, __variance, __sd, __skewness,
- __kurtosis, __kurtosis_excess, __range and __support]
-
-[def __gsl [@http://www.gnu.org/software/gsl/ GSL-1.9]]
-[def __glibc [@http://www.gnu.org/software/libc/ GNU C Lib]]
-[def __hpc [@http://docs.hp.com/en/B9106-90010/index.html HP-UX C Library]]
-[def __cephes [@http://www.netlib.org/cephes/ Cephes]]
-
-
-[def __why_complements [link why_complements why complements?]]
-[def __complements [link complements complements]]
-
-[/ Some composite templates]
-[template super[x]'''<superscript>'''[x]'''</superscript>''']
-[template sub[x]'''<subscript>'''[x]'''</subscript>''']
-[template floor[x]'''&#x230A;'''[x]'''&#x230B;''']
-[template floorlr[x][lfloor][x][rfloor]]
-[template ceil[x] '''&#x2308;'''[x]'''&#x2309;''']
-
-[template header_file[file] [@../../../../[file] [file]]]
-
-[template optional_policy[]
-The final __Policy 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
-[link math_toolkit.policy policy documentation for more details].]
-
-[template discrete_quantile_warning[NAME]
-[caution
-The [NAME] distribution is a discrete distribution: internally
-functions like the `cdf` and `pdf` 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.
-
-The quantile function will by default return an integer result that has been
-/rounded outwards/. 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 /at least/ the requested
-coverage will be present in the central region, and /no more than/
-the requested coverage will be present in the tails.
-
-This behaviour can be changed so that the quantile functions are rounded
-differently, or even return a real-valued result using
-[link math_toolkit.policy.pol_overview Policies]. It is strongly
-recommended that you read the tutorial
-[link math_toolkit.policy.pol_tutorial.understand_dis_quant
-Understanding Quantiles of Discrete Distributions] before
-using the quantile function on the [NAME] distribution. The
-[link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs]
-describe how to change the rounding policy
-for these distributions.
-] [/ caution]
-] [/ template discrete_quantile_warning]
-
-[section:main_overview Overview]
-
-[include overview.qbk]
-[include structure.qbk] [/getting about]
-
-[include result_type_calc.qbk]
-[include error_handling.qbk]
-
-[section:pol_overview Configuration and Policies]
-[policy_overview]
-[endsect]
-
-[include thread_safety.qbk]
-
-[section:perf_over Performance]
-[performance_overview]
-[endsect]
-[section:history1 History and What's New]
-[history]
-[endsect]
-[include contact_info.qbk]
-
-[endsect] [/section:main_overview Overview]
-
-[section:dist Statistical Distributions and Functions]
-[include dist_tutorial.qbk]
-[include dist_reference.qbk]
-[endsect] [/section:dist Statistical Distributions and Functions]
-
-[section:special Special Functions]
-
-[section:sf_gamma Gamma Functions]
-[include tgamma.qbk]
-[include lgamma.qbk]
-[include digamma.qbk]
-[include gamma_ratios.qbk]
-[include igamma.qbk]
-[include igamma_inv.qbk]
-[include gamma_derivatives.qbk]
-[endsect] [/section:sf_gamma Gamma Functions]
-
-[include factorials.qbk]
-
-[section:sf_beta Beta Functions]
-[include beta.qbk]
-[include ibeta.qbk]
-[include ibeta_inv.qbk]
-[include beta_derivative.qbk]
-[endsect] [/section:sf_beta Beta Functions]
-
-[section:sf_erf Error Functions]
-[include erf.qbk]
-[include erf_inv.qbk]
-[endsect] [/section:sf_erf Error Functions]
-
-[section:sf_poly Polynomials]
-[include legendre.qbk]
-[include laguerre.qbk]
-[include hermite.qbk]
-[include spherical_harmonic.qbk]
-[endsect] [/section:sf_poly Polynomials]
-
-[section:bessel Bessel Functions]
-[include bessel_introduction.qbk]
-[include bessel_jy.qbk]
-[include bessel_ik.qbk]
-[include bessel_spherical.qbk]
-[endsect] [/section:bessel Bessel Functions]
-
-[section:ellint Elliptic Integrals]
-[include ellint_introduction.qbk]
-[include ellint_carlson.qbk]
-[include ellint_legendre.qbk]
-[endsect] [/section:ellint Elliptic Integrals]
-
-[include powers.qbk]
-[include sinc.qbk]
-[include inv_hyper.qbk]
-[include fpclassify.qbk]
-[endsect] [/section:special Special Functions]
-
-[section:toolkit Internal Details and Tools (Experimental)]
-
-[include internals_overview.qbk]
-
-[section:internals1 Reused Utilities]
-[include series.qbk]
-[include fraction.qbk]
-[include rational.qbk]
-[include roots.qbk]
-[include roots_without_derivatives.qbk]
-[include minima.qbk]
-[endsect] [/section:internals1 Reused Utilities]
-
-[section:internals2 Testing and Development]
-[include polynomial.qbk]
-[include minimax.qbk]
-[include relative_error.qbk]
-[include test_data.qbk]
-[endsect] [/section:internals2 Testing and Development]
-
-[endsect] [/section:toolkit Toolkit]
-
-[section:using_udt Use with User Defined Floating-Point Types]
-[include concepts.qbk]
-[endsect] [/section:using_udt Use with User Defined Floating-Point Types]
-
-[include policy.qbk]
-
-[include performance.qbk]
-
-[section:backgrounders Backgrounders]
-[include implementation.qbk]
-[include error.qbk] [/relative error NOT handling]
-[include lanczos.qbk]
-[include remez.qbk]
-[include references.qbk]
-[endsect] [/section:backgrounds Backgrounders]
-
-[section:status Library Status]
-[section:history1 History and What's New]
-[history]
-[endsect]
-[include compilers.qbk]
-[include issues.qbk]
-[include credits.qbk]
-[/include test_HTML4_symbols.qbk]
-[/include test_Latin1_symbols.qbk]
-
-[endsect] [/section:status Status and Roadmap]
-
-[/ math.qbk
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/minima.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/minima.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,64 +0,0 @@
-[section:minima Locating Function Minima]
-
-[h4 synopsis]
-
-``
-#include <boost/math/tools/minima.hpp>
-``
-
- template <class F, class T>
- std::pair<T, T> brent_find_minima(F f, T min, T max, int bits);
-
- template <class F, class T>
- std::pair<T, T> brent_find_minima(F f, T min, T max, int bits, boost::uintmax_t& max_iter);
-
-[h4 Description]
-
-These two functions locate the minima of the continuous function /f/ using Brent's
-algorithm. Parameters are:
-
-[variablelist
-[[f] [The function to minimise. The function should be smooth over the
- range \[min,max\], with no maxima occurring in that interval.]]
-[[min] [The lower endpoint of the range in which to search
- for the minima.]]
-[[max] [The upper endpoint of the range in which to search
- for the minima.]]
-[[bits] [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, therefore if /bits/
- is set to a value greater than one half of the bits in type T, then
- the value will be ignored.]]
-[[max_iter] [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.]]
-]
-
-[*Returns:] a pair containing the value of the abscissa at the minima and the value
-of f(x) at the minima.
-
-[h4 Implementation]
-
-This is a reasonably faithful implementation of Brent's algorithm, refer
-to:
-
-Brent, R.P. 1973, Algorithms for Minimization without Derivatives
-(Englewood Cliffs, NJ: Prentice-Hall), Chapter 5.
-
-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.
-
-An algorithm with guaranteed convergence for finding a zero
-of a function, R. P. Brent, The Computer Journal, Vol 44, 1971.
-
-[endsect][/section:minima Locating Function Minima]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/minimax.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/minimax.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,159 +0,0 @@
-[section:minimax Minimax Approximations and the Remez Algorithm]
-
-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.
-
-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.
-
-Unless you already familar with the Remez method
-you should first read the [link math_toolkit.backgrounders.remez
-brief background article explaining the principals behind the
-Remez algorithm].
-
-The program consists of two parts:
-
-[variablelist
-[[main.cpp][Contains the command line parser, and all the calls to the Remez code.]]
-[[f.cpp][Contains the function to approximate.]]
-]
-
-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:
-
- NTL::RR f(const NTL::RR& x, int variant);
-
-Returns the value of the function /variant/ at point /x/. So if you
-wish you can just add the function to approximate as a new variant
-after the existing examples.
-
-In addition to those two files, the program needs to be linked to
-a [link math_toolkit.using_udt.use_ntl patched NTL library to compile].
-
-Note that the function /f/ must return the rational part of the
-approximation: for example if you are approximating a function
-/f(x)/ then it is quite common to use:
-
- f(x) = g(x)(Y + R(x))
-
-where /g(x)/ is the dominant part of /f(x)/, /Y/ is some constant, and
-/R(x)/ is the rational approximation part, usually optimised for a low
-absolute error compared to |Y|.
-
-In this case you would define /f/ to return ['f(x)/g(x)] and then set the
-y-offset of the approximation to /Y/ (see command line options below).
-
-Many other forms are possible, but in all cases the objective is to
-split /f(x)/ 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.
-
-Command line options for the program are as follows:
-
-[variablelist
-[[variant N][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.]]
-[[range a b][Sets the domain for the approximation to the range \[a,b\], defaults
- to \[0,1\].]]
-[[relative][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.]]
-[[absolute][Sets the Remez code to optimise for absolute error.]]
-[[pin \[true|false\]]["Pins" the code so that the rational approximation
- passes through the origin. Obviously only set this to
- /true/ 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.]]
-[[order N D][Sets the order of the approximation to /N/ in the numerator and /D/
- in the denominator. If /D/ 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 /pin/ was set to true, and the
- first coefficient of the denominator is always one.]]
-[[working-precision N][Sets the working precision of NTL::RR to /N/ binary digits. Defaults to 250.]]
-[[target-precision N][Sets the precision of printed output to /N/ 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).]]
-[[skew val]["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. /val/ should be in the range
- \[-100,+100\], the default is zero.]]
-[[brake val][Sets a brake on each step so that the change in the
- control points is braked by /val%/. Defaults to 50,
- try a higher value if an approximation won't converge,
- or a lower value to get speedier convergence.]]
-[[x-offset val][Sets the x-offset to /val/: the approximation will
- be generated for `f(x + X) + Y` where /X/ is the x-offset
- and /Y/ 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.]]
-[[y-offset val][Sets the y-offset to /val/: the approximation will
- be generated for `f(x + X) + Y` where /X/ is the x-offset
- and /Y/ 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.]]
-[[y-offset auto][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 /float/ precision (and should be stored as a /float/
- in your code). The approximation will
- be generated for `f(x + X) + Y` where /X/ is the x-offset
- and /Y/ is the y-offset. Defaults to zero.]]
-[[graph N][Prints N evaluations of f(x) at evenly spaced points over the
- range being optimised. If unspecified then /N/ defaults
- to 3. Use to check that f(x) is indeed smooth over the range
- of interest.]]
-[[step N][Performs /N/ steps, or one step if /N/ 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.]]
-[[test \[float|double|long\]][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.]]
-[[test \[float|double|long\] N] [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.]]
-[[rescale a b][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.]]
-[[rotate][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.]]
-[[info][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.]]
-]
-
-
-[endsect][/section:minimax Minimax Approximations and the Remez Algorithm]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/overview.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/overview.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,83 +0,0 @@
-[section:intro About the Math Toolkit]
-
-This library is divided into three interconnected parts:
-
-[h4 Statistical Distributions]
-
-Provides a reasonably comprehensive set of
-[link math_toolkit.dist statistical distributions],
-upon which higher level statistical tests can be built.
-
-The initial focus is on the central
-[@http://en.wikipedia.org/wiki/Univariate univariate ]
-[@http://mathworld.wolfram.com/StatisticalDistribution.html distributions].
-Both [@http://mathworld.wolfram.com/ContinuousDistribution.html continuous]
-(like [link math_toolkit.dist.dist_ref.dists.normal_dist normal]
-& [link math_toolkit.dist.dist_ref.dists.f_dist Fisher])
-and [@http://mathworld.wolfram.com/DiscreteDistribution.html discrete]
-(like [link math_toolkit.dist.dist_ref.dists.binomial_dist binomial]
-& [link math_toolkit.dist.dist_ref.dists.poisson_dist Poisson])
-distributions are provided.
-
-A [link math_toolkit.dist.stat_tut comprehensive tutorial is provided],
-along with a series of
-[link math_toolkit.dist.stat_tut.weg worked examples] illustrating
-how the library is used to conduct statistical tests.
-
-[h4 Mathematical Special Functions]
-
-Provides a small number of high quality
-[link math_toolkit.special special functions],
-initially these were concentrated on functions used in statistical applications
-along with those in the [tr1].
-
-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.
-
-All the implementations
-are fully generic and support the use of arbitrary "real-number" types,
-although they are optimised for use with types with known-about
-[@http://en.wikipedia.org/wiki/Significand significand (or mantissa)]
-sizes: typically `float`, `double` or `long double`.
-
-[h4 Implementation Toolkit]
-
-Provides [link math_toolkit.toolkit many of the tools] 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.
-
-There are helpers for the
-[link math_toolkit.toolkit.internals1.series_evaluation
-evaluation of infinite series],
-[link math_toolkit.toolkit.internals1.cf continued
-fractions] and [link math_toolkit.toolkit.internals1.rational
-rational approximations].
-
-There is a fairly comprehensive set of root finding and
-[link math_toolkit.toolkit.internals1.minima function minimisation
-algorithms]: the root finding algorithms are both
-[link math_toolkit.toolkit.internals1.roots with] and
-[link math_toolkit.toolkit.internals1.roots2 without] derivative support.
-
-A [link math_toolkit.toolkit.internals2.minimax
-Remez algorithm implementation] allows for the locating of minimax rational
-approximations.
-
-There are also (experimental) classes for the
-[link math_toolkit.toolkit.internals2.polynomials manipulation of polynomials], for
-[link math_toolkit.toolkit.internals2.error_test
-testing a special function against tabulated test data], and for
-the [link math_toolkit.toolkit.internals2.test_data
-rapid generation of test data] and/or data for output to an
-external graphing application.
-
-[endsect] [/section:intro Introduction]

Deleted: sandbox/math_toolkit/libs/math/doc/performance.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/performance.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,372 +0,0 @@
-[template perf[name value] [value]]
-[template para[text] '''<para>'''[text]'''</para>''']
-
-[section:perf Performance]
-
-[section:perf_over Performance Overview]
-[performance_overview]
-[endsect]
-
-[section:interp Interpretting these Results]
-
-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 ['"twice as slow as the best
-performing result".] Actual timings in seconds per function call
-are also shown in parenthesis.
-
-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.
-
-[caution 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!
-]
-
-[endsect]
-
-[section:getting_best Getting the Best Performance from this Library]
-
-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.
-
-[table Performance Comparison of Release and Debug Settings
-[[Function]
- [Microsoft Visual C++ 8.0
-
- Debug Settings: /Od /ZI
- ]
- [Microsoft Visual C++ 8.0
-
- Release settings: /Ox /arch:SSE2
- ]]
-
-[[__erf][[perf msvc-debug-erf..[para 16.65][para (1.028e-006s)]]][[perf msvc-erf..[para *1.00*][para (6.173e-008s)]]]]
-[[__erf_inv][[perf msvc-debug-erf_inv..[para 19.28][para (1.215e-006s)]]][[perf msvc-erf_inv..[para *1.00*][para (6.302e-008s)]]]]
-[[__ibeta and __ibetac][[perf msvc-debug-ibeta..[para 8.32][para (1.540e-005s)]]][[perf msvc-ibeta..[para *1.00*][para (1.852e-006s)]]]]
-[[__ibeta_inv and __ibetac_inv][[perf msvc-debug-ibeta_inv..[para 10.25][para (7.492e-005s)]]][[perf msvc-ibeta_inv..[para *1.00*][para (7.311e-006s)]]]]
-[[__ibeta_inva, __ibetac_inva, __ibeta_invb and __ibetac_invb][[perf msvc-debug-ibeta_invab..[para 8.57][para (2.441e-004s)]]][[perf msvc-ibeta_invab..[para *1.00*][para (2.847e-005s)]]]]
-[[__gamma_p and __gamma_q][[perf msvc-debug-igamma..[para 10.98][para (1.044e-005s)]]][[perf msvc-igamma..[para *1.00*][para (9.504e-007s)]]]]
-[[__gamma_p_inv and __gamma_q_inv][[perf msvc-debug-igamma_inv..[para 10.25][para (3.721e-005s)]]][[perf msvc-igamma_inv..[para *1.00*][para (3.631e-006s)]]]]
-[[__gamma_p_inva and __gamma_q_inva][[perf msvc-debug-igamma_inva..[para 11.26][para (1.124e-004s)]]][[perf msvc-igamma_inva..[para *1.00*][para (9.982e-006s)]]]]
-]
-
-[endsect]
-
-[section:comp_compilers Comparing Compilers]
-
-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).
-
-[table Performance Comparison of Various Windows Compilers
-[[Function]
- [Intel C++ 10.0
-
- ( /Ox /Qipo /QxN )
- ]
- [Microsoft Visual C++ 8.0
-
- ( /Ox /arch:SSE2 )
- ]
- [Cygwin G++ 3.4
-
- ( /O3 )
- ]]
-[[__erf][[perf intel-erf..[para *1.00*][para (4.118e-008s)]]][[perf msvc-erf..[para 1.50][para (6.173e-008s)]]][[perf gcc-erf..[para 3.24][para (1.336e-007s)]]]]
-[[__erf_inv][[perf intel-erf_inv..[para *1.00*][para (4.439e-008s)]]][[perf msvc-erf_inv..[para 1.42][para (6.302e-008s)]]][[perf gcc-erf_inv..[para 7.88][para (3.500e-007s)]]]]
-[[__ibeta and __ibetac][[perf intel-ibeta..[para *1.00*][para (1.631e-006s)]]][[perf msvc-ibeta..[para 1.14][para (1.852e-006s)]]][[perf gcc-ibeta..[para 3.05][para (4.975e-006s)]]]]
-[[__ibeta_inv and __ibetac_inv][[perf intel-ibeta_inv..[para *1.00*][para (6.133e-006s)]]][[perf msvc-ibeta_inv..[para 1.19][para (7.311e-006s)]]][[perf gcc-ibeta_inv..[para 2.60][para (1.597e-005s)]]]]
-[[__ibeta_inva, __ibetac_inva, __ibeta_invb and __ibetac_invb][[perf intel-ibeta_invab..[para *1.00*][para (2.453e-005s)]]][[perf msvc-ibeta_invab..[para 1.16][para (2.847e-005s)]]][[perf gcc-ibeta_invab..[para 2.83][para (6.947e-005s)]]]]
-[[__gamma_p and __gamma_q][[perf intel-igamma..[para *1.00*][para (6.735e-007s)]]][[perf msvc-igamma..[para 1.41][para (9.504e-007s)]]][[perf gcc-igamma..[para 2.78][para (1.872e-006s)]]]]
-[[__gamma_p_inv and __gamma_q_inv][[perf intel-igamma_inv..[para *1.00*][para (2.637e-006s)]]][[perf msvc-igamma_inv..[para 1.38][para (3.631e-006s)]]][[perf gcc-igamma_inv..[para 3.31][para (8.736e-006s)]]]]
-[[__gamma_p_inva and __gamma_q_inva][[perf intel-igamma_inva..[para *1.00*][para (7.716e-006s)]]][[perf msvc-igamma_inva..[para 1.29][para (9.982e-006s)]]][[perf gcc-igamma_inva..[para 2.56][para (1.974e-005s)]]]]
-]
-
-[endsect]
-
-[section:tuning Performance Tuning Macros]
-
-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.
-
-[table
-[[Macro][Meaning]]
-[[BOOST_MATH_POLY_METHOD]
- [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.]]
-[[BOOST_MATH_RATIONAL_METHOD]
- [Determines how symmetrical rational functions are evaluated: mostly
- this only effects how the Lanczos approximation is evaluated, and how
- the `evaluate_rational` function behaves. Define to one
- of the values 0, 1, 2 or 3: see below for the meaning of these values.
- ]]
-[[BOOST_MATH_MAX_POLY_ORDER]
- [The maximum order of polynomial or rational function that will
- be evaluated by a method other than 0 (a simple "for" loop).
- ]]
-[[BOOST_MATH_INT_TABLE_TYPE(RT, IT)]
- [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:
-
- #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) RT
-
- to boost/math/tools/user.hpp, otherwise the default of:
-
- #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) IT
-
- Set in boost/math/config.hpp is fine, and may well result in smaller
- code.
- ]]
-]
-
-The values to which `BOOST_MATH_POLY_METHOD` and `BOOST_MATH_RATIONAL_METHOD`
-may be set are as follows:
-
-[table
-[[Value][Effect]]
-[[0][The polynomial or rational function is evaluated using Horner's
- method, and a simple for-loop.
-
- Note that if the order of the polynomial
- or rational function is a runtime parameter, or the order is
- greater than the value of `BOOST_MATH_MAX_POLY_ORDER`, then
- this method is always used, irrespective of the value
- of `BOOST_MATH_POLY_METHOD` or `BOOST_MATH_RATIONAL_METHOD`.]]
-[[1][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 `BOOST_MATH_MAX_POLY_ORDER`. ]]
-[[2][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 `BOOST_MATH_MAX_POLY_ORDER`.]]
-[[3][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 `BOOST_MATH_MAX_POLY_ORDER`.]]
-]
-
-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.
-
-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.
-
-[table A Comparison of Polynomial Evaluation Methods
-[[Compiler/platform][Method 0][Method 1][Method 2][Method 3]]
-[[Microsoft C++ 8.0, Polynomial evaluation] [[perf msvc-Polynomial-method-0..[para 1.34][para (1.161e-007s)]]][[perf msvc-Polynomial-method-1..[para 1.13][para (9.777e-008s)]]][[perf msvc-Polynomial-method-2..[para 1.07][para (9.289e-008s)]]][[perf msvc-Polynomial-method-3..[para *1.00*][para (8.678e-008s)]]]]
-[[Microsoft C++ 8.0, Rational evaluation] [[perf msvc-Rational-method-0..[para *1.00*][para (1.443e-007s)]]][[perf msvc-Rational-method-1..[para 1.03][para (1.492e-007s)]]][[perf msvc-Rational-method-2..[para 1.20][para (1.736e-007s)]]][[perf msvc-Rational-method-3..[para 1.07][para (1.540e-007s)]]]]
-[[Intel C++ 10.0 (Windows), Polynomial evaluation] [[perf intel-Polynomial-method-0..[para 1.03][para (7.702e-008s)]]][[perf intel-Polynomial-method-1..[para 1.03][para (7.702e-008s)]]][[perf intel-Polynomial-method-2..[para *1.00*][para (7.446e-008s)]]][[perf intel-Polynomial-method-3..[para 1.03][para (7.690e-008s)]]]]
-[[Intel C++ 10.0 (Windows), Rational evaluation] [[perf intel-Rational-method-0..[para *1.00*][para (1.245e-007s)]]][[perf intel-Rational-method-1..[para *1.00*][para (1.245e-007s)]]][[perf intel-Rational-method-2..[para 1.18][para (1.465e-007s)]]][[perf intel-Rational-method-3..[para 1.06][para (1.318e-007s)]]]]
-[[GNU G++ 4.2 (Linux), Polynomial evaluation] [[perf gcc-4_2-ld-Polynomial-method-0..[para 1.61][para (1.220e-007s)]]][[perf gcc-4_2-ld-Polynomial-method-1..[para 1.68][para (1.269e-007s)]]][[perf gcc-4_2-ld-Polynomial-method-2..[para 1.23][para (9.275e-008s)]]][[perf gcc-4_2-ld-Polynomial-method-3..[para *1.00*][para (7.566e-008s)]]]]
-[[GNU G++ 4.2 (Linux), Rational evaluation] [[perf gcc-4_2-ld-Rational-method-0..[para 1.26][para (1.660e-007s)]]][[perf gcc-4_2-ld-Rational-method-1..[para 1.33][para (1.758e-007s)]]][[perf gcc-4_2-ld-Rational-method-2..[para *1.00*][para (1.318e-007s)]]][[perf gcc-4_2-ld-Rational-method-3..[para 1.15][para (1.513e-007s)]]]]
-[[Intel C++ 10.0 (Linux), Polynomial evaluation] [[perf intel-linux-Polynomial-method-0..[para 1.15][para (9.154e-008s)]]][[perf intel-linux-Polynomial-method-1..[para 1.15][para (9.154e-008s)]]][[perf intel-linux-Polynomial-method-2..[para *1.00*][para (7.934e-008s)]]][[perf intel-linux-Polynomial-method-3..[para *1.00*][para (7.934e-008s)]]]]
-[[Intel C++ 10.0 (Linux), Rational evaluation] [[perf intel-linux-Rational-method-0..[para *1.00*][para (1.245e-007s)]]][[perf intel-linux-Rational-method-1..[para *1.00*][para (1.245e-007s)]]][[perf intel-linux-Rational-method-2..[para 1.35][para (1.684e-007s)]]][[perf intel-linux-Rational-method-3..[para 1.04][para (1.294e-007s)]]]]
-]
-
-There is one final performance tuning option that is available as a compile time
-[link math_toolkit.policy policy]. Normally when evaluating functions at `double`
-precision, these are actually evaluated at `long double` precision internally:
-this helps to ensure that as close to full `double` precision as possible is
-achieved, but may slow down execution in some environments. The defaults for
-this policy can be changed by
-[link math_toolkit.policy.pol_ref.policy_defaults
-defining the macro `BOOST_MATH_PROMOTE_DOUBLE_POLICY`]
-to `false`, or
-[link math_toolkit.policy.pol_ref.internal_promotion
-by specifying a specific policy] when calling the special
-functions or distributions. See also the
-[link math_toolkit.policy.pol_tutorial policy tutorial].
-
-[table Performance Comparison with and Without Internal Promotion to long double
-[[Function]
- [GCC 4.2 , Linux
-
- (with internal promotion of double to long double).
- ]
- [GCC 4.2, Linux
-
- (without promotion of double).
- ]
-]
-[[__erf][[perf gcc-4_2-ld-erf..[para 1.48][para (1.387e-007s)]]][[perf gcc-4_2-erf..[para *1.00*][para (9.377e-008s)]]]]
-[[__erf_inv][[perf gcc-4_2-ld-erf_inv..[para 1.11][para (4.009e-007s)]]][[perf gcc-4_2-erf_inv..[para *1.00*][para (3.598e-007s)]]]]
-[[__ibeta and __ibetac][[perf gcc-4_2-ld-ibeta..[para 1.29][para (5.354e-006s)]]][[perf gcc-4_2-ibeta..[para *1.00*][para (4.137e-006s)]]]]
-[[__ibeta_inv and __ibetac_inv][[perf gcc-4_2-ld-ibeta_inv..[para 1.44][para (2.220e-005s)]]][[perf gcc-4_2-ibeta_inv..[para *1.00*][para (1.538e-005s)]]]]
-[[__ibeta_inva, __ibetac_inva, __ibeta_invb and __ibetac_invb][[perf gcc-4_2-ld-ibeta_invab..[para 1.25][para (7.009e-005s)]]][[perf gcc-4_2-ibeta_invab..[para *1.00*][para (5.607e-005s)]]]]
-[[__gamma_p and __gamma_q][[perf gcc-4_2-ld-igamma..[para 1.26][para (3.116e-006s)]]][[perf gcc-4_2-igamma..[para *1.00*][para (2.464e-006s)]]]]
-[[__gamma_p_inv and __gamma_q_inv][[perf gcc-4_2-ld-igamma_inv..[para 1.27][para (1.178e-005s)]]][[perf gcc-4_2-igamma_inv..[para *1.00*][para (9.291e-006s)]]]]
-[[__gamma_p_inva and __gamma_q_inva][[perf gcc-4_2-ld-igamma_inva..[para 1.20][para (2.765e-005s)]]][[perf gcc-4_2-igamma_inva..[para *1.00*][para (2.311e-005s)]]]]
-]
-
-[endsect]
-[section:comparisons Comparisons to Other Open Source Libraries]
-
-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.
-
-[caution
-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 /our/ 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.
-]
-
-[heading Comparison to GSL-1.9 and Cephes]
-
-All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Windows XP
-machine, with all the libraries compiled with Microsoft Visual C++ 2005 using
-the `/Ox /arch:SSE2` options.
-
-[table
-[[Function][Boost][GSL-1.9][Cephes]]
-[[__tgamma][[perf msvc-gamma..[para 1.50][para (2.566e-007s)]]][[perf msvc-gamma-gsl..[para 1.54][para (2.627e-007s)]]][[perf msvc-gamma-cephes..[para *1.00*][para (1.709e-007s)]]]]
-[[__lgamma][[perf msvc-lgamma..[para 1.73][para (2.688e-007s)]]][[perf msvc-lgamma-gsl..[para 3.61][para (5.621e-007s)]]][[perf msvc-lgamma-cephes..[para *1.00*][para (1.556e-007s)]]]]
-[[__gamma_p and __gamma_q][[perf msvc-igamma..[para *1.00*][para (9.504e-007s)]]][[perf msvc-igamma-gsl..[para 2.15][para (2.042e-006s)]]][[perf msvc-igamma-cephes..[para 2.57][para (2.439e-006s)]]]]
-[[__gamma_p_inv and __gamma_q_inv][[perf msvc-igamma_inv..[para *1.00*][para (3.631e-006s)]]][N\/A][+INF [footnote Cephes gets stuck in an infinite loop while trying to execute our test cases.]]]
-[[__ibeta and __ibetac][[perf msvc-ibeta..[para *1.00*][para (1.852e-006s)]]][[perf msvc-ibeta-cephes..[para 1.07][para (1.974e-006s)]]][[perf msvc-ibeta-cephes..[para 1.07][para (1.974e-006s)]]]]
-[[__ibeta_inv and __ibetac_inv][[perf msvc-ibeta_inv..[para *1.00*][para (7.311e-006s)]]][N\/A][[perf msvc-ibeta_inv-cephes..[para 2.24][para (1.637e-005s)]]]]
-]
-
-[heading Comparison to the R Statistical Library on Windows]
-
-All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Windows XP
-machine, with the test program compiled with Microsoft Visual C++ 2005, and
-R-2.5.0 compiled in "standalone mode" with MinGW-3.4
-(R-2.5.0 appears not to be buildable with Visual C++).
-
-[table A Comparison to the R Statistical Library on Windows XP
-[[Statistical Function][Boost][R]]
-[[__beta_distrib CDF][[perf msvc-dist-beta-cdf..[para 1.20][para (1.916e-006s)]]][[perf msvc-dist-beta-R-cdf..[para *1.00*][para (1.597e-006s)]]]]
-[[__beta_distrib Quantile][[perf msvc-dist-beta-quantile..[para *1.00*][para (6.570e-006s)]]][[perf msvc-dist-beta-R-quantile..[para 74.66[footnote 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.]][para (4.905e-004s)]]]]
-[[__binomial_distrib CDF][[perf msvc-dist-binomial-cdf..[para *1.00*][para (5.276e-007s)]]][[perf msvc-dist-binom-R-cdf..[para 2.45][para (1.293e-006s)]]]]
-[[__binomial_distrib Quantile][[perf msvc-dist-binomial-quantile..[para *1.00*][para (4.013e-006s)]]][[perf msvc-dist-binom-R-quantile..[para 1.32][para (5.280e-006s)]]]]
-[[__cauchy_distrib CDF][[perf msvc-dist-cauchy-cdf..[para *1.00*][para (1.231e-007s)]]][[perf msvc-dist-cauchy-R-cdf..[para 1.28][para (1.576e-007s)]]]]
-[[__cauchy_distrib Quantile][[perf msvc-dist-cauchy-quantile..[para *1.00*][para (1.498e-007s)]]][[perf msvc-dist-cauchy-R-quantile..[para *1.00*][para (1.498e-007s)]]]]
-[[__chi_squared_distrib CDF][[perf msvc-dist-chi_squared-cdf..[para *1.00*][para (7.889e-007s)]]][[perf msvc-dist-chisq-R-cdf..[para 2.48][para (1.955e-006s)]]]]
-[[__chi_squared_distrib Quantile][[perf msvc-dist-chi_squared-quantile..[para *1.00*][para (4.303e-006s)]]][[perf msvc-dist-chisq-R-quantile..[para 1.61][para (6.925e-006s)]]]]
-[[__exp_distrib CDF][[perf msvc-dist-exponential-cdf..[para *1.00*][para (1.955e-007s)]]][[perf msvc-dist-exp-R-cdf..[para 1.97][para (3.844e-007s)]]]]
-[[__exp_distrib Quantile][[perf msvc-dist-exponential-quantile..[para 1.07][para (1.206e-007s)]]][[perf msvc-dist-exp-R-quantile..[para *1.00*][para (1.126e-007s)]]]]
-[[__F_distrib CDF][[perf msvc-dist-fisher_f-cdf..[para *1.00*][para (1.309e-006s)]]][[perf msvc-dist-f-R-cdf..[para 2.12][para (2.780e-006s)]]]]
-[[__F_distrib Quantile][[perf msvc-dist-fisher_f-quantile..[para *1.00*][para (7.204e-006s)]]][[perf msvc-dist-f-R-quantile..[para 1.78][para (1.280e-005s)]]]]
-[[__gamma_distrib CDF][[perf msvc-dist-gamma-cdf..[para *1.00*][para (1.076e-006s)]]][[perf msvc-dist-gamma-R-cdf..[para 2.07][para (2.227e-006s)]]]]
-[[__gamma_distrib Quantile][[perf msvc-dist-gamma-quantile..[para *1.00*][para (5.189e-006s)]]][[perf msvc-dist-gamma-R-quantile..[para 1.14][para (5.937e-006s)]]]]
-[[__lognormal_distrib CDF][[perf msvc-dist-lognormal-cdf..[para *1.00*][para (2.078e-007s)]]][[perf msvc-dist-lnorm-R-cdf..[para 1.41][para (2.930e-007s)]]]]
-[[__lognormal_distrib Quantile][[perf msvc-dist-lognormal-quantile..[para *1.00*][para (6.692e-007s)]]][[perf msvc-dist-lnorm-R-quantile..[para 1.63][para (1.090e-006s)]]]]
-[[__negative_binomial_distrib CDF][[perf msvc-dist-negative_binomial-cdf..[para *1.00*][para (9.005e-007s)]]][[perf msvc-dist-nbinom-R-cdf..[para 2.42][para (2.178e-006s)]]]]
-[[__negative_binomial_distrib Quantile][[perf msvc-dist-negative_binomial-quantile..[para *1.00*][para (9.601e-006s)]]][[perf msvc-dist-nbinom-R-quantile..[para 53.59[footnote 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]][para (5.145e-004s)]]]]
-[[__normal_distrib CDF][[perf msvc-dist-normal-cdf..[para *1.00*][para (5.926e-008s)]]][[perf msvc-dist-norm-R-cdf..[para 3.01][para (1.785e-007s)]]]]
-[[__normal_distrib Quantile][[perf msvc-dist-normal-quantile..[para *1.00*][para (1.248e-007s)]]][[perf msvc-dist-norm-R-quantile..[para 1.05][para (1.311e-007s)]]]]
-[[__poisson_distrib CDF][[perf msvc-dist-poisson-cdf..[para *1.00*][para (8.999e-007s)]]][[perf msvc-dist-pois-R-cdf..[para 2.42][para (2.175e-006s)]]]]
-[[__poisson_distrib][[perf msvc-dist-poisson-quantile..[para *1.00*][para (1.853e-006s)]]][[perf msvc-dist-pois-R-quantile..[para 2.17][para (4.014e-006s)]]]]
-[[__students_t_distrib CDF][[perf msvc-dist-students_t-cdf..[para *1.00*][para (1.223e-006s)]]][[perf msvc-dist-t-R-cdf..[para 1.13][para (1.376e-006s)]]]]
-[[__students_t_distrib Quantile][[perf msvc-dist-students_t-quantile..[para *1.00*][para (2.570e-006s)]]][[perf msvc-dist-t-R-quantile..[para 1.04][para (2.668e-006s)]]]]
-[[__weibull_distrib CDF][[perf msvc-dist-weibull-cdf..[para *1.00*][para (4.741e-007s)]]][[perf msvc-dist-weibull-R-cdf..[para 1.46][para (6.943e-007s)]]]]
-[[__weibull_distrib Quantile][[perf msvc-dist-weibull-quantile..[para *1.00*][para (7.926e-007s)]]][[perf msvc-dist-weibull-R-quantile..[para 1.08][para (8.542e-007s)]]]]
-]
-
-[heading Comparison to the R Statistical Library on Linux]
-
-All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Mandriva Linux
-machine, with the test program and R-2.5.0 compiled with GNU G++ 4.2.0.
-
-[table A Comparison to the R Statistical Library on Linux
-[[Statistical Function][Boost][R]]
-[[__beta_distrib CDF][[perf gcc-4_2-dist-beta-cdf..[para 1.71][para (3.508e-006s)]]][[perf gcc-4_2-dist-beta-R-cdf..[para *1.00*][para (2.050e-006s)]]]]
-[[__beta_distrib Quantile][[perf gcc-4_2-dist-beta-quantile..[para *1.00*][para (1.294e-005s)]]][[perf gcc-4_2-dist-beta-R-quantile..[para 44.06[footnote 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.]][para (5.701e-004s)]]]]
-[[__binomial_distrib CDF][[perf gcc-4_2-dist-binomial-cdf..[para 1.22][para (1.342e-006s)]]][[perf gcc-4_2-dist-binom-R-cdf..[para *1.00*][para (1.104e-006s)]]]]
-[[__binomial_distrib Quantile][[perf gcc-4_2-dist-binomial-quantile..[para 1.36][para (7.083e-006s)]]][[perf gcc-4_2-dist-binom-R-quantile..[para *1.00*][para (5.194e-006s)]]]]
-[[__cauchy_distrib CDF][[perf gcc-4_2-dist-cauchy-cdf..[para *1.00*][para (1.372e-007s)]]][[perf gcc-4_2-dist-cauchy-R-cdf..[para 1.47][para (2.017e-007s)]]]]
-[[__cauchy_distrib Quantile][[perf gcc-4_2-dist-cauchy-quantile..[para *1.00*][para (1.542e-007s)]]][[perf gcc-4_2-dist-cauchy-R-quantile..[para 1.14][para (1.752e-007s)]]]]
-[[__chi_squared_distrib CDF][[perf gcc-4_2-dist-chi_squared-cdf..[para 1.04][para (1.820e-006s)]]][[perf gcc-4_2-dist-chisq-R-cdf..[para *1.00*][para (1.753e-006s)]]]]
-[[__chi_squared_distrib Quantile][[perf gcc-4_2-dist-chi_squared-quantile..[para 1.39][para (9.345e-006s)]]][[perf gcc-4_2-dist-chisq-R-quantile..[para *1.00*][para (6.728e-006s)]]]]
-[[__exp_distrib CDF][[perf gcc-4_2-dist-exponential-cdf..[para *1.00*][para (2.195e-007s)]]][[perf gcc-4_2-dist-exp-R-cdf..[para 1.17][para (2.561e-007s)]]]]
-[[__exp_distrib Quantile][[perf gcc-4_2-dist-exponential-quantile..[para *1.00*][para (1.123e-007s)]]][[perf gcc-4_2-dist-exp-R-quantile..[para 1.03][para (1.155e-007s)]]]]
-[[__F_distrib CDF][[perf gcc-4_2-dist-fisher_f-cdf..[para *1.00*][para (2.744e-006s)]]][[perf gcc-4_2-dist-f-R-cdf..[para 1.08][para (2.970e-006s)]]]]
-[[__F_distrib Quantile][[perf gcc-4_2-dist-fisher_f-quantile..[para 1.14][para (1.550e-005s)]]][[perf gcc-4_2-dist-f-R-quantile..[para *1.00*][para (1.359e-005s)]]]]
-[[__gamma_distrib CDF][[perf gcc-4_2-dist-gamma-cdf..[para 1.29][para (2.578e-006s)]]][[perf gcc-4_2-dist-gamma-R-cdf..[para *1.00*][para (1.992e-006s)]]]]
-[[__gamma_distrib Quantile][[perf gcc-4_2-dist-gamma-quantile..[para 1.77][para (1.020e-005s)]]][[perf gcc-4_2-dist-gamma-R-quantile..[para *1.00*][para (5.757e-006s)]]]]
-[[__lognormal_distrib CDF][[perf gcc-4_2-dist-lognormal-cdf..[para *1.00*][para (1.782e-007s)]]][[perf gcc-4_2-dist-lnorm-R-cdf..[para 2.00][para (3.564e-007s)]]]]
-[[__lognormal_distrib Quantile][[perf gcc-4_2-dist-lognormal-quantile..[para *1.00*][para (7.093e-007s)]]][[perf gcc-4_2-dist-lnorm-R-quantile..[para 1.07][para (7.607e-007s)]]]]
-[[__negative_binomial_distrib CDF][[perf gcc-4_2-dist-negative_binomial-cdf..[para 1.03][para (2.209e-006s)]]][[perf gcc-4_2-dist-nbinom-R-cdf..[para *1.00*][para (2.141e-006s)]]]]
-[[__negative_binomial_distrib Quantile][[perf gcc-4_2-dist-negative_binomial-quantile..[para *1.00*][para (1.826e-005s)]]][[perf gcc-4_2-dist-nbinom-R-quantile..[para 30.07[footnote 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]][para (5.490e-004s)]]]]
-[[__normal_distrib CDF][[perf gcc-4_2-dist-normal-cdf..[para *1.00*][para (8.542e-008s)]]][[perf gcc-4_2-dist-norm-R-cdf..[para 2.09][para (1.782e-007s)]]]]
-[[__normal_distrib Quantile][[perf gcc-4_2-dist-normal-quantile..[para *1.00*][para (1.362e-007s)]]][[perf gcc-4_2-dist-norm-R-quantile..[para 1.26][para (1.722e-007s)]]]]
-[[__poisson_distrib CDF][[perf gcc-4_2-dist-poisson-cdf..[para 1.10][para (1.953e-006s)]]][[perf gcc-4_2-dist-pois-R-cdf..[para *1.00*][para (1.775e-006s)]]]]
-[[__poisson_distrib][[perf gcc-4_2-dist-poisson-quantile..[para 1.12][para (4.214e-006s)]]][[perf gcc-4_2-dist-pois-R-quantile..[para *1.00*][para (3.752e-006s)]]]]
-[[__students_t_distrib CDF][[perf gcc-4_2-dist-students_t-cdf..[para 1.55][para (2.441e-006s)]]][[perf gcc-4_2-dist-t-R-cdf..[para *1.00*][para (1.576e-006s)]]]]
-[[__students_t_distrib Quantile][[perf gcc-4_2-dist-students_t-quantile..[para 1.33][para (3.972e-006s)]]][[perf gcc-4_2-dist-t-R-quantile..[para *1.00*][para (2.990e-006s)]]]]
-[[__weibull_distrib CDF][[perf gcc-4_2-dist-weibull-cdf..[para *1.00*][para (6.640e-007s)]]][[perf gcc-4_2-dist-weibull-R-cdf..[para 1.06][para (7.031e-007s)]]]]
-[[__weibull_distrib Quantile][[perf gcc-4_2-dist-weibull-quantile..[para *1.00*][para (7.504e-007s)]]][[perf gcc-4_2-dist-weibull-R-quantile..[para 1.03][para (7.710e-007s)]]]]
-]
-
-[endsect]
-
-[section:perf_test_app The Performance Test Application]
-
-Under ['boost-path]\/libs\/math\/performance you will find a
-(fairly rudimentary) performance test application for this library.
-
-To run this application yourself, build the all the .cpp files in
-['boost-path]\/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
-[link math_toolkit.perf.tuning available performance tuning options].
-
-If you want to use this application to test the effect of changing
-any of the __policy_section, then you will need to build and run it twice:
-once with the default __policy_section, and then a second time with the
-__policy_section you want to test set as the default.
-
-[endsect]
-
-[endsect]
-
-
-
-
-
-
-
-
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/poisson_optimisation.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/poisson_optimisation.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,121 +0,0 @@
-[sect:optim Optimisation Examples}
-
-[h4 Poisson Distribution - Optimization and Accuracy is quite complicated.
-
-The general formula for calculating the CDF uses the incomplete gamma thus:
-
- return gamma_q(k+1, mean);
-
-But the case of small integral k is *very* common, so it is worth considering optimisation.
-
-The first obvious step is to use a finite sum of each pdf (Probability *density* function)
-for each value of k to build up the cdf (*cumulative* distribution function).
-
-This could be done using the pdf function for the distribution,
-for which there are two equivalent formulae:
-
- return exp(-mean + log(mean) * k - lgamma(k+1));
-
- return gamma_p_derivative(k+1, mean);
-
-The pdf would probably be more accurate using gamma_p_derivative.
-
-The reason is that the expression:
-
- -mean + log(mean) * k - lgamma(k+1)
-
-Will produce a value much smaller than the largest of the terms, so you get
-cancellation error: and then when you pass the result to exp() which
-converts the absolute error in it's argument to a relative error in the
-result (explanation available if required), you effectively amplify the
-error further still.
-
-gamma_p_derivative is just a thin wrapper around some of the internals of
-the incomplete gamma, it does its utmost to avoid issues like this, because
-this function is responsible for virtually all of the error in the result.
-Hopefully further advances in the future might improve things even further
-(what is really needed is an 'accurate' pow(1+x) function, but that's a whole
-other story!).
-
-But calling pdf function makes repeated, redundant, checks on the value of mean and k,
-
- result += pdf(dist, i);
-
-so it may be faster to substitute the formula for the pdf in a summation loop
-
- result += exp(-mean) * pow(mean, i) / unchecked_factorial(i);
-
-(simplified by removing casting from RealType).
-
-Of course, mean is unchanged during this summation,
-so exp(mean) should only be calculated once, outside the loop.
-
-Optimising compilers 'might' do this, but one can easily ensure this.
-
-Obviously too, k must be small enough that unchecked_factorial is OK:
-34 is an obvious choice as the limit for 32-bit float.
-For larger k, the number of iterations is like to be uneconomic.
-Only experiment can determine the optimum value of k
-for any particular RealType (float, double...)
-
-But also note that
-
-The incomplete gamma already optimises this case
-(argument "a" is a small int),
-although only when the result q (1-p) would be < 0.5.
-
-And moreover, in the above series, each term can be calculated
-from the previous one much more efficiently:
-
-cdf = sum from 0 to k of C[k]
-
-with:
-
-C[0] = exp(-mean)
-
-C[N+1] = C[N] * mean / (N+1)
-
-So hopefully that's:
-
- {
- RealType result = exp(-mean);
- RealType term = result;
- for(int i = 1; i <= k; ++i)
- { // cdf is sum of pdfs.
- term *= mean / i;
- result += term;
- }
- return result;
- }
-
-This is exactly the same finite sum as used by gamma_p/gamma_q internally.
-
-As explained previously it's only used when the result
-
-p > 0.5 or 1-p = q < 0.5.
-
-The slight danger when using the sum directly like this, is that if
-the mean is small and k is large then you're calculating a value ~1, so
-conceivably you might overshoot slightly. For this and other reasons in the
-case when p < 0.5 and q > 0.5 gamma_p/gamma_q use a different (infinite but
-rapidly converging) sum, so that danger isn't present since you always
-calculate the smaller of p and q.
-
-So... it's tempting to suggest that you just call gamma_p/gamma_q as
-required. However, there is a slight benefit for the k = 0 case because you
-avoid all the internal logic inside gamma_p/gamma_q trying to figure out
-which method to use etc.
-
-For the incomplete beta function, there are no simple finite sums
-available (that I know of yet anyway), so when there's a choice between a
-finite sum of the PDF and an incomplete beta call, the finite sum may indeed
-win out in that case.
-
-[endsect][/sect:optim Optimisation Examples}
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/policy.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/policy.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,826 +0,0 @@
-[section:policy Policies]
-
-[section:pol_overview Policy Overview]
-[policy_overview]
-[endsect][/section:pol_overview Policy Overview]
-
-[include policy_tutorial.qbk]
-
-[section:pol_ref Policy Reference]
-
-[section:error_handling_policies Error Handling Policies]
-
-There are two orthogonal aspects to error handling:
-
-* What to do (if anything) with the error.
-* What kind of error is being raised.
-
-[h4 Available Actions When an Error is Raised]
-
-What to do with the error is encapsulated by an enumerated type:
-
- namespace boost { namespace math { namespace policies {
-
- enum error_policy_type
- {
- throw_on_error = 0, // throw an exception.
- errno_on_error = 1, // set ::errno & return 0, NaN, infinity or best guess.
- ignore_error = 2, // return 0, NaN, infinity or best guess.
- user_error = 3 // call a user-defined error handler.
- };
-
- }}} // namespaces
-
-The various enumerated values have the following meanings:
-
-[h5 throw_on_error]
-
-Will throw one of the following exceptions, depending upon the
- type of the error:
- [table
- [[Error Type][Exception]]
- [[Domain Error][std::domain_error]]
- [[Pole Error][std::domain_error]]
- [[Overflow Error][std::overflow_error]]
- [[Underflow Error][std::underflow_error]]
- [[Denorm Error][std::underflow_error]]
- [[Evaluation Error][boost::math::evaluation_error]]
- ]
-
-[h5 errno_on_error]
-
-Will set global `::errno` to one of the following values depending
-upon the error type, and then return the same value as if the error
-had been ignored:
- [table
- [[Error Type][errno value]]
- [[Domain Error][EDOM]]
- [[Pole Error][EDOM]]
- [[Overflow Error][ERANGE]]
- [[Underflow Error][ERANGE]]
- [[Denorm Error][ERANGE]]
- [[Evaluation Error][EDOM]]
- ]
-
-[h5 ignore_error]
-
-Will return a one of the values below depending on the error type (`::errno` is NOT changed)::
- [table
- [[Error Type][Returned Value]]
- [[Domain Error][std::numeric_limits<T>::quiet_NaN()]]
- [[Pole Error][std::numeric_limits<T>::quiet_NaN()]]
- [[Overflow Error][std::numeric_limits<T>::infinity()]]
- [[Underflow Error][0]]
- [[Denorm Error][The denormalised value.]]
- [[Evaluation Error][The best guess as to the result: which
- may be significantly in error.]]
- ]
-
-[h5 user_error]
-
-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:
-
- namespace boost{ namespace math{ namespace policies{
-
- template <class T>
- T user_domain_error(const char* function, const char* message, const T& val);
-
- template <class T>
- T user_pole_error(const char* function, const char* message, const T& val);
-
- template <class T>
- T user_overflow_error(const char* function, const char* message, const T& val);
-
- template <class T>
- T user_underflow_error(const char* function, const char* message, const T& val);
-
- template <class T>
- T user_denorm_error(const char* function, const char* message, const T& val);
-
- template <class T>
- T user_evaluation_error(const char* function, const char* message, const T& val);
-
- }}} // namespaces
-
-Note that the strings ['function] and ['message] 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 ['function] string, and
-if there is a %1% specifier in the ['message] string then it
-should be replaced with the value of ['val].
-
-There is more information on user-defined error handlers in
-the [link math_toolkit.policy.pol_tutorial.user_defined_error_policies
-tutorial here].
-
-[h4 Kinds of Error Raised]
-
-There are five kinds of error reported by this library,
-which are summarised in the following table:
-
-[table
-[[Error Type]
- [Policy Class]
- [Description]]
-[[Domain Error]
- [boost::math::policies::domain_error<['action]>]
- [Raised when more or more arguments are outside the
- defined range of the function.
-
- Defaults to `boost::math::policies::domain_error<throw_on_error>`
-
- When the action is set to ['throw_on_error]
- then throws `std::domain_error`]]
-[[Pole Error]
- [boost::math::policies::pole_error<['action]>]
- [Raised when more or more arguments would cause the function
- to be evaluated at a pole.
-
- Defaults to `boost::math::policies::pole_error<throw_on_error>`
-
- When the action is ['throw_on_error] then
- throw a `std::domain_error`]]
-[[Overflow Error]
- [boost::math::policies::overflow_error<['action]>]
- [Raised when the result of the function is outside
- the representable range of the floating point type used.
-
- Defaults to `boost::math::policies::overflow_error<throw_on_error>`.
-
- When the action is ['throw_on_error] then throws a `std::overflow_error`.]]
-[[Underflow Error]
- [boost::math::policies::underflow_error<['action]>]
- [Raised when the result of the function is too small
- to be represented in the floating point type used.
-
- Defaults to `boost::math::policies::underflow_error<ignore_error>`
-
- When the specified action is ['throw_on_error] then
- throws a `std::underflow_error`]]
-[[Denorm Error]
- [boost::math::policies::denorm_error<['action]>]
- [Raised when the result of the function is a
- denormalised value.
-
- Defaults to `boost::math::policies::denorm_error<ignore_error>`
-
- When the action is ['throw_on_error] then throws a `std::underflow_error`]]
-[[Evaluation Error]
- [boost::math::policies::evaluation_error<['action]>]
- [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!
-
- Defaults to `boost::math::policies::evaluation_error<throw_on_error>`
-
- When the action is ['throw_on_error] then throws `boost::math::evaluation_error`]]
-]
-
-[h4 Examples]
-
-Suppose we want a call to `tgamma` to behave in a C-compatible way and set global
-`::errno` rather than throw an exception, we can achieve this at the call site
-using:
-
-[import ../example/policy_ref_snip1.cpp]
-
-[policy_ref_snip1]
-
-Suppose we want a statistical distribution to return infinities,
-rather than throw exceptions, then we can use:
-
-[import ../example/policy_ref_snip2.cpp]
-
-[policy_ref_snip2]
-
-[endsect] [/section:error_handling_policies Error Handling Policies]
-
-[section:internal_promotion Internal Promotion Policies]
-
-Normally when evaluating a function at say `float` precision, maximal
-accuracy is assured by conducting the calculation at `double` precision
-internally, and then rounding the result. There are two policies that
-effect whether internal promotion takes place or not:
-
-[table
-[[Policy][Meaning]]
-[[`boost::math::policies::promote_float<B>`]
- [Indicates whether `float` arguments should be promoted to `double`
- precision internally: defaults to `boost::math::policies::promote_float<true>`]]
-[[`boost::math::policies::promote_double<B>`]
- [Indicates whether `double` arguments should be promoted to `long double`
- precision internally: defaults to `boost::math::policies::promote_double<true>`]]
-]
-
-[h4 Examples]
-
-Suppose we want `tgamma` to be evaluated without internal promotion to
-`long double`, then we could use:
-
-[import ../example/policy_ref_snip3.cpp]
-[policy_ref_snip3]
-
-Alternatively, suppose we want a distribution to perform calculations
-without promoting `float` to `double`, then we could use:
-
-[import ../example/policy_ref_snip4.cpp]
-[policy_ref_snip4]
-
-[endsect] [/section:internal_promotion Internal Promotion Policies]
-
-[section:assert_undefined Mathematically Undefined Function Policies]
-
-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.
-
-For example, the Cauchy distribution does not have a mean, so what should
-
- mean(cauchy<>());
-
-return, and should such an expression even compile at all?
-
-The default behaviour is for all such functions to not compile at all
- - in fact they will raise a
-[@http://www.boost.org/libs/static_assert/index.html static assertion]
- - 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).
-
-This behaviour is controlled by the `assert_undefined<>` policy:
-
- namespace boost{ namespace math{ namespace policies {
-
- template <bool b>
- class assert_undefined;
-
- }}} //namespaces
-
-For example:
-
- #include <boost/math/distributions/cauchy.hpp>
-
- using namespace boost::math::policies;
- using namespace boost::math;
-
- // This will not compile, cauchy has no mean!
- double m1 = mean(cauchy());
-
- // This will compile, but raises a domain error!
- double m2 = mean(cauchy_distribution<double, policy<assert_undefined<false> > >());
-
-[endsect][/section:assert_undefined Mathematically Undefined Function Policies]
-
-[section:discrete_quant_ref Discrete Quantile Policies]
-
-If a statistical distribution is ['discrete] 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 `discrete_quantile` policy defines how
-discrete quantiles work, and how integer results are rounded:
-
- enum discrete_quantile_policy_type
- {
- real,
- integer_round_outwards, // default
- integer_round_inwards,
- integer_round_down,
- integer_round_up,
- integer_round_nearest
- };
-
- template <discrete_quantile_policy_type>
- struct discrete_quantile;
-
-The values that `discrete_quantile` can take have the following meanings:
-
-[h5 real]
-
-Ignores the discreteness of the distribution, and returns a real-valued
-result. For example:
-
-[import ../example/policy_ref_snip5.cpp]
-[policy_ref_snip5]
-
-Results in `x = 27.3898` and `y = 68.1584`.
-
-[h5 integer_round_outwards]
-
-This is the default policy: an integer value is returned so that:
-
-* Lower quantiles (where the probability is less than 0.5) are rounded
-down.
-* Upper quantiles (where the probability is greater than 0.5) are rounded up.
-
-This is normally the safest rounding policy, since it ensures that both
-one and two sided intervals are guaranteed to have ['at least]
-the requested coverage. For example:
-
-[import ../example/policy_ref_snip6.cpp]
-[policy_ref_snip6]
-
-Results in `x = 27` (rounded down from 27.3898) and `y = 69` (rounded up from 68.1584).
-
-The variables x and y are now defined so that:
-
- cdf(negative_binomial(20), x) <= 0.05
- cdf(negative_binomial(20), y) >= 0.95
-
-In other words we guarantee ['at least 90% coverage in the central region overall],
-and also ['no more than 5% coverage in each tail].
-
-[h5 integer_round_inwards]
-
-This is the opposite of ['integer_round_outwards]: an integer value is returned so that:
-
-* Lower quantiles (where the probability is less than 0.5) are rounded
-['up].
-* Upper quantiles (where the probability is greater than 0.5) are rounded ['down].
-
-For example:
-
-[import ../example/policy_ref_snip7.cpp]
-
-[policy_ref_snip7]
-
-Results in `x = 28` (rounded up from 27.3898) and `y = 68` (rounded down from 68.1584).
-
-The variables x and y are now defined so that:
-
- cdf(negative_binomial(20), x) >= 0.05
- cdf(negative_binomial(20), y) <= 0.95
-
-In other words we guarantee ['at no more than 90% coverage in the central region overall],
-and also ['at least 5% coverage in each tail].
-
-[h5 integer_round_down]
-
-Always rounds down to an integer value, no matter whether it's an upper
-or a lower quantile.
-
-[h5 integer_round_up]
-
-Always rounds up to an integer value, no matter whether it's an upper
-or a lower quantile.
-
-[h5 integer_round_nearest]
-
-Always rounds to the nearest integer value, no matter whether it's an upper
-or a lower quantile. This will produce the requested coverage
-['in the average case], but for any specific example may results in
-either significantly more or less coverage than the requested amount.
-For example:
-
-For example:
-
-[import ../example/policy_ref_snip8.cpp]
-
-[policy_ref_snip8]
-
-Results in `x = 27` (rounded from 27.3898) and `y = 68` (rounded from 68.1584).
-
-[endsect][/section:discrete_quant_ref Discrete Quantile Policies]
-
-[section:precision_pol Precision Policies]
-
-There are two equivalent policies that effect the ['working precision]
-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.
-
- namespace boost{ namespace math{ namespace policies{
-
- template <int N>
- digits10;
-
- template <int N>
- digits2;
-
- }}} // namespaces
-
-As you would expect, ['digits10] specifies the number of decimal digits
-to use, and ['digits2] the number of binary digits. Internally, whichever
-is used, the precision is always converted to ['binary digits].
-
-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.
-
-For example we could calculate `tgamma` to approximately 5 decimal digits using:
-
-[import ../example/policy_ref_snip9.cpp]
-
-[policy_ref_snip9]
-
-Or again using ['make_policy]:
-
-[import ../example/policy_ref_snip10.cpp]
-
-[policy_ref_snip10]
-
-And for a quantile of a distribution to approximately 25-bit precision:
-
-[import ../example/policy_ref_snip11.cpp]
-
-[policy_ref_snip11]
-
-[endsect][/section:precision_pol Precision Policies]
-
-[section:iteration_pol Iteration Limits Policies]
-
-There are two policies that effect the iterative algorithms
-used to implement the special functions in this library:
-
- template <unsigned long limit = BOOST_MATH_MAX_SERIES_ITERATION_POLICY>
- class max_series_iterations;
-
- template <unsigned long limit = BOOST_MATH_MAX_ROOT_ITERATION_POLICY>
- class max_root_iterations;
-
-The class `max_series_iterations` determines the maximum number of
-iterations permitted in a series evaluation, before the special
-function gives up and returns the result of __evaluation_error.
-
-The class `max_root_iterations` determines the maximum number
-of iterations permitted in a root-finding algorithm before the special
-function gives up and returns the result of __evaluation_error.
-
-[endsect][/section:iteration_pol Iteration Limits Policies]
-
-[section:policy_defaults Using macros to Change the Policy Defaults]
-
-You can use the various macros below to change any (or all) of the policies.
-
-You can make a local change by placing a macro definition *before*
-a function or distribution #include.
-
-[caution There is a danger of One-Definition-Rule violations if you
-add ad-hock macros to more than one source files: these must be set the same in *every
-translation unit*.]
-
-[caution 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!]
-
-If you want to alter the defaults for any or all of
-the policies for *all* functions and distributions, installation-wide,
-then you can do so by defining various macros in
-[@../../../../boost/math/tools/user.hpp boost/math/tools/user.hpp].
-
-[h5 BOOST_MATH_DOMAIN_ERROR_POLICY]
-
-Defines what happens when a domain error occurs, if not defined then
-defaults to `throw_on_error`, but can be set to any of the enumerated
-actions for error handing: `throw_on_error`, `errno_on_error`,
-`ignore_error` or `user_error`.
-
-[h5 BOOST_MATH_POLE_ERROR_POLICY]
-
-Defines what happens when a pole error occurs, if not defined then
-defaults to `throw_on_error`, but can be set to any of the enumerated
-actions for error handing: `throw_on_error`, `errno_on_error`,
-`ignore_error` or `user_error`.
-
-[h5 BOOST_MATH_OVERFLOW_ERROR_POLICY]
-
-Defines what happens when an overflow error occurs, if not defined then
-defaults to `throw_on_error`, but can be set to any of the enumerated
-actions for error handing: `throw_on_error`, `errno_on_error`,
-`ignore_error` or `user_error`.
-
-[h5 BOOST_MATH_EVALUATION_ERROR_POLICY]
-
-Defines what happens when an internal evaluation error occurs, if not defined then
-defaults to `throw_on_error`, but can be set to any of the enumerated
-actions for error handing: `throw_on_error`, `errno_on_error`,
-`ignore_error` or `user_error`.
-
-[h5 BOOST_MATH_UNDERFLOW_ERROR_POLICY]
-
-Defines what happens when an overflow error occurs, if not defined then
-defaults to `ignore_error`, but can be set to any of the enumerated
-actions for error handing: `throw_on_error`, `errno_on_error`,
-`ignore_error` or `user_error`.
-
-[h5 BOOST_MATH_DENORM_ERROR_POLICY]
-
-Defines what happens when a denormalisation error occurs, if not defined then
-defaults to `ignore_error`, but can be set to any of the enumerated
-actions for error handing: `throw_on_error`, `errno_on_error`,
-`ignore_error` or `user_error`.
-
-[h5 BOOST_MATH_DIGITS10_POLICY]
-
-Defines how many decimal digits to use in internal computations:
-defaults to `0` - 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.
-
-[h5 BOOST_MATH_PROMOTE_FLOAT_POLICY]
-
-Determines whether `float` types get promoted to `double`
-internally to ensure maximum precision in the result, defaults
-to `true`, but can be set to `false` to turn promotion of
-`float`'s off.
-
-[h5 BOOST_MATH_PROMOTE_DOUBLE_POLICY]
-
-Determines whether `double` types get promoted to `long double`
-internally to ensure maximum precision in the result, defaults
-to `true`, but can be set to `false` to turn promotion of
-`double`'s off.
-
-[h5 BOOST_MATH_DISCRETE_QUANTILE_POLICY]
-
-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: `real`, `integer_round_outwards`, `integer_round_inwards`,
-`integer_round_down`, `integer_round_up`, `integer_round_nearest`. Defaults to
-`integer_round_outwards`.
-
-[h5 BOOST_MATH_ASSERT_UNDEFINED_POLICY]
-
-Determines whether functions that are mathematically undefined
-for a specific distribution compile or raise a static (i.e. compile-time)
-assertion. Defaults to `true`: meaning that any mathematically
-undefined function will not compile. When set to `false` 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.
-
-[h5 BOOST_MATH_MAX_SERIES_ITERATION_POLICY]
-
-Determines how many series iterations a special function is permitted
-to perform before it gives up and returns an __evaluation_error:
-Defaults to 1000000.
-
-[h5 BOOST_MATH_MAX_ROOT_ITERATION_POLICY]
-
-Determines how many root-finding iterations a special function is permitted
-to perform before it gives up and returns an __evaluation_error:
-Defaults to 200.
-
-[h5 Example]
-
-Suppose we want overflow errors to set `::errno` 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:
-
- #define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error
- #define BOOST_MATH_DISCRETE_QUANTILE_POLICY real
- #define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
-
-or we could place these definitions *before*
-
- #include <boost/math/distributions/normal.hpp>
- using boost::math::normal_distribution;
-
-in a source .cpp file.
-
-[endsect][/section:policy_defaults Changing the Policy Defaults]
-
-[section:namespace_pol Setting Polices at Namespace Scope]
-
-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:
-
- BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy)
-
-and:
-
- BOOST_MATH_DECLARE_DISTRIBUTIONS(Type, Policy)
-
-You can use either of these macros after including any special function
-or distribution header. For example:
-
-[import ../example/policy_ref_snip12.cpp]
-
-[policy_ref_snip12]
-
-In this example, using BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS results in
-a set of thin inline forwarding functions being defined:
-
- template <class T>
- inline T tgamma(T a){ return ::boost::math::tgamma(a, mypolicy()); }
-
- template <class T>
- inline T lgamma(T a) ( return ::boost::math::lgamma(a, mypolicy()); }
-
-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.
-
-We can do the same thing with the distributions, but this time we need to
-specify the floating-point type to use:
-
-[import ../example/policy_ref_snip13.cpp]
-
-[policy_ref_snip13]
-
-In this example the result of BOOST_MATH_DECLARE_DISTRIBUTIONS is to
-declare a typedef for each distribution like this:
-
- typedef boost::math::cauchy_distribution<double, my_policy> cauchy;
- tyepdef boost::math::gamma_distribution<double, my_policy> gamma;
-
-and so on. The name given to each typedef is the name of the distribution
-with the "_distribution" suffix removed.
-
-[endsect][/section Changing the Policy Defaults]
-
-[section:pol_ref_ref Policy Class Reference]
-
-There's very little to say here, the `policy` class is just a rag-bag
-compile-time container for a collection of policies:
-
-```#include <boost/math/policies/policy.hpp>```
-
-
- namespace boost{
- namespace math{
- namespace policies
-
- template <class A1 = default_policy,
- class A2 = default_policy,
- class A3 = default_policy,
- class A4 = default_policy,
- class A5 = default_policy,
- class A6 = default_policy,
- class A7 = default_policy,
- class A8 = default_policy,
- class A9 = default_policy,
- class A10 = default_policy,
- class A11 = default_policy>
- struct policy
- {
- public:
- typedef ``['computed-from-template-arguments]`` domain_error_type;
- typedef ``['computed-from-template-arguments]`` pole_error_type;
- typedef ``['computed-from-template-arguments]`` overflow_error_type;
- typedef ``['computed-from-template-arguments]`` underflow_error_type;
- typedef ``['computed-from-template-arguments]`` denorm_error_type;
- typedef ``['computed-from-template-arguments]`` evaluation_error_type;
- typedef ``['computed-from-template-arguments]`` precision_type;
- typedef ``['computed-from-template-arguments]`` promote_float_type;
- typedef ``['computed-from-template-arguments]`` promote_double_type;
- typedef ``['computed-from-template-arguments]`` discrete_quantile_type;
- typedef ``['computed-from-template-arguments]`` assert_undefined_type;
- };
-
- template <...argument list...>
- typename normalise<policy<>, A1>::type make_policy(...argument list..);
-
- template <class Policy,
- class A1 = default_policy,
- class A2 = default_policy,
- class A3 = default_policy,
- class A4 = default_policy,
- class A5 = default_policy,
- class A6 = default_policy,
- class A7 = default_policy,
- class A8 = default_policy,
- class A9 = default_policy,
- class A10 = default_policy,
- class A11 = default_policy>
- struct normalise
- {
- typedef ``computed-from-template-arguments`` type;
- };
-
-The member typedefs of class `policy` are intended for internal use
-but are documented briefly here for the sake of completeness.
-
- policy<...>::domain_error_type
-
-Specifies how domain errors are handled, will be an instance of
-`boost::math::policies::domain_error<>` with the template argument to
-`domain_error` one of the `error_policy_type` enumerated values.
-
- policy<...>::pole_error_type
-
-Specifies how pole-errors are handled, will be an instance of
-`boost::math::policies::pole_error<>` with the template argument to
-`pole_error` one of the `error_policy_type` enumerated values.
-
- policy<...>::overflow_error_type
-
-Specifies how overflow errors are handled, will be an instance of
-`boost::math::policies::overflow_error<>` with the template argument to
-`overflow_error` one of the `error_policy_type` enumerated values.
-
- policy<...>::underflow_error_type
-
-Specifies how underflow errors are handled, will be an instance of
-`boost::math::policies::underflow_error<>` with the template argument to
-`underflow_error` one of the `error_policy_type` enumerated values.
-
- policy<...>::denorm_error_type
-
-Specifies how denorm errors are handled, will be an instance of
-`boost::math::policies::denorm_error<>` with the template argument to
-`denorm_error` one of the `error_policy_type` enumerated values.
-
- policy<...>::evaluation_error_type
-
-Specifies how evaluation errors are handled, will be an instance of
-`boost::math::policies::evaluation_error<>` with the template argument to
-`evaluation_error` one of the `error_policy_type` enumerated values.
-
- policy<...>::precision_type
-
-Specifies the internal precision to use in binary digits (uses zero
-to represent whatever the default precision is). Will be an instance
-of `boost::math::policies::digits2<N>` which in turn inherits from
-`boost::mpl::int_<N>`.
-
- policy<...>::promote_float_type
-
-Specifies whether or not to promote `float` arguments to `double` precision
-internally. Will be an instance of `boost::math::policies::promote_float<B>`
-which in turn inherits from `boost::mpl::bool_<B>`.
-
- policy<...>::promote_double_type
-
-Specifies whether or not to promote `double` arguments to `long double` precision
-internally. Will be an instance of `boost::math::policies::promote_float<B>`
-which in turn inherits from `boost::mpl::bool_<B>`.
-
- policy<...>::discrete_quantile_type
-
-Specifies how discrete quantiles are evaluated, will be an instance
-of `boost::math::policies::discrete_quantile<>` instantiated with one of
-the `discrete_quantile_policy_type` enumerated type.
-
- policy<...>::assert_undefined_type
-
-Specifies whether mathematically-undefined properties are
-asserted as compile-time errors, or treated as runtime errors
-instead. Will be an instance of `boost::math::policies::assert_undefined<B>`
-which in turn inherits from `boost::math::mpl::bool_<B>`.
-
-
- template <...argument list...>
- typename normalise<policy<>, A1>::type make_policy(...argument list..);
-
-`make_policy` is a helper function that converts a list of policies into
-a normalised `policy` class.
-
- template <class Policy,
- class A1 = default_policy,
- class A2 = default_policy,
- class A3 = default_policy,
- class A4 = default_policy,
- class A5 = default_policy,
- class A6 = default_policy,
- class A7 = default_policy,
- class A8 = default_policy,
- class A9 = default_policy,
- class A10 = default_policy,
- class A11 = default_policy>
- struct normalise
- {
- typedef ``computed-from-template-arguments`` type;
- };
-
-The `normalise` class template converts one instantiation of the
-`policy` class into a normalised form. This is used internally
-to reduce code bloat: so that instantiating a special function
-on `policy<A,B>` or `policy<B,A>` actually both generate the same
-code internally.
-
-Further more, `normalise` 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.
-
-[endsect][/section:pol_ref_ref Policy Class Reference]
-
-[endsect][/section:pol_ref Policy Reference]
-[endsect][/section:policy Policies]
-
-[/ math.qbk
- Copyright 2007 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/policy_tutorial.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/policy_tutorial.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,504 +0,0 @@
-
-[section:pol_tutorial Policy Tutorial]
-
-[section:what_is_a_policy So Just What is a Policy Anyway?]
-
-A policy is a compile-time mechanism for customising the behaviour of a
-special function, or a statistical distribution. With Policies you can
-control:
-
-* What action to take when an error occurs.
-* What happens when you call a function that is mathematically undefined
-(for example if you ask for the mean of a Cauchy distribution).
-* What happens when you ask for a quantile of a discrete distribution.
-* Whether the library is allowed to internally promote `float` to `double`
-and `double` to `long double` in order to improve precision.
-* What precision to use when calculating the result.
-
-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.
-
-For this reason a Policy is a /type/: in fact it's an instance of the
-class template `boost::math::policies::policy<>`. This class is just a
-compile-time-container of user-selected policies (sometimes called a type-list):
-
- using namespace boost::math::policies;
- //
- // Define a policy that sets ::errno on overflow, and does
- // not promote double to long double internally:
- //
- typedef policy<domain_error<errno_on_error>, promote_double<false> > mypolicy;
-
-[endsect][/section:what_is_a_policy So Just What is a Policy Anyway?]
-
-[section:policy_tut_defaults Policies Have Sensible Defaults]
-
-Most of the time you can just ignore the policy framework, the defaults for
-the various policies are as follows, if these work OK for you then you can
-stop reading now!
-
-[variablelist
-[[Domain Error][Throws a `std::domain_error` exception.]]
-[[Pole Error][Occurs when a function is evaluated at a pole: throws a `std::domain_error` exception.]]
-[[Overflow Error][Throws a `std::overflow_error` exception.]]
-[[Underflow][Ignores the underflow, and returns zero.]]
-[[Denormalised Result][Ignores the fact that the result is denormalised, and returns it.]]
-[[Internal Evaluation Error][Throws a `boost::math::evaluation_error` exception.]]
-[[Promotion of float to double][Does occur by default - gives full float precision results.]]
-[[Promotion of double to long double][Does occur by default if long double offers
- more precision than double.]]
-[[Precision of Approximation Used][By default uses an approximation that
- will result in the lowest level of error for the type of the result.]]
-[[Behaviour of Discrete Quantiles]
- [
- The quantile function will by default return an integer result that has been
- /rounded outwards/. 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 /at least/ the requested
- coverage will be present in the central region, and /no more than/
- the requested coverage will be present in the tails.
-
-This behaviour can be changed so that the quantile functions are rounded
- differently, or even return a real-valued result using
- [link math_toolkit.policy.pol_overview Policies]. It is strongly
- recommended that you read the tutorial
- [link math_toolkit.policy.pol_tutorial.understand_dis_quant
- Understanding Quantiles of Discrete Distributions] before
- using the quantile function on a discrete distribution. The
- [link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs]
- describe how to change the rounding policy
- for these distributions.
-]]
-]
-
-What's more, if you define your own policy type, then it automatically
-inherits the defaults for any policies not explicitly set, so given:
-
- using namespace boost::math::policies;
- //
- // Define a policy that sets ::errno on overflow, and does
- // not promote double to long double internally:
- //
- typedef policy<domain_error<errno_on_error>, promote_double<false> > mypolicy;
-
-then `mypolicy` defines a policy where only the overflow error handling and
-`double`-promotion policies differ from the defaults.
-
-[endsect][/section:policy_tut_defaults Policies Have Sensible Defaults]
-
-[section:policy_usage So How are Policies Used Anyway?]
-
-The details follow later, but basically policies can be set by either:
-
-* Defining some macros that change the default behaviour: [*this is the
- recommended method for setting installation-wide policies].
-* By instantiating a distribution object with an explicit policy:
- this is mainly reserved for ad hoc policy changes.
-* By passing a policy to a special function as an optional final argument:
- this is mainly reserved for ad hoc policy changes.
-* By using some helper macros to define a set of functions or distributions
-in the current namespace that use a specific policy: [*this is the
-recommended method for setting policies on a project- or translation-unit-wide
-basis].
-
-The following sections introduce these methods in more detail.
-
-[endsect][/section:policy_usage So How are Policies Used Anyway?]
-
-[section:changing_policy_defaults Changing the Policy Defaults]
-
-The default policies used by the library are changed by the usual
-configuration macro method.
-
-For example, passing `-DBOOST_MATH_DOMAIN_ERROR_POLICY=errno_on_error` to
-your compiler will cause domain errors to set `::errno` and return a NaN
-rather than the usual default behaviour of throwing a `std::domain_error`
-exception.
-
-[tip For Microsoft Visual Studio,you can add to the Project Property Page,
-C/C++, Preprocessor, Preprocessor definitions like:
-
-``BOOST_MATH_ASSERT_UNDEFINED_POLICY=0
-BOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error``
-
-This may be helpful to avoid complications with pre-compiled headers
-that may mean that the equivalent definitions in source code:
-
-``#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
-#define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error``
-
-may be ignored.
-
-The compiler command line shows:
-
-``/D "BOOST_MATH_ASSERT_UNDEFINED_POLICY=0"
-/D "BOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error"``
-] [/MSVC tip]
-
-There is however a very important caveat to this:
-
-[important
-[*['Default policies changed by setting configuration macros must be changed
-uniformly in every translation unit in the program.]]
-
-Failure to follow this rule may result in violations of the "One
-Definition Rule (ODR)" and result in unpredictable program behaviour.]
-
-That means there are only two safe ways to use these macros:
-
-* Edit them in [@../../../../boost/math/tools/user.hpp 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).
-* Set the defines in your project's Makefile or build environment, so that they
-are set uniformly across all translation units.
-
-What you should *not* do is:
-
-* Set the defines in the source file using `#define` as doing so
-almost certainly will break your program, unless you're absolutely
-certain that the program is restricted to a single translation unit.
-
-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: ['don't say that you weren't warned!]
-
-[error_handling_example]
-
-[endsect][/section:changing_policy_defaults Changing the Policy Defaults]
-
-[section:ad_hoc_dist_policies Setting Policies for Distributions on an Ad Hoc Basis]
-
-All of the statistical distributions in this library are class templates
-that accept two template parameters, both with sensible defaults, for
-example:
-
- namespace boost{ namespace math{
-
- template <class RealType = double, class Policy = policies::policy<> >
- class fisher_f_distribution;
-
- typedef fisher_f_distribution<> fisher_f;
-
- }}
-
-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
-`double` precision arithmetic and all the default policies.
-
-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 /nearest/
-integer, then here's how it can be done:
-
-[import ../example/policy_eg_3.cpp]
-
-[policy_eg_3]
-
-Which outputs:
-
-[pre quantile is: 40]
-
-[endsect][/section:ad_hoc_dist_policies Setting Policies for Distributions on an Ad Hoc Basis]
-
-[section:ad_hoc_sf_policies Changing the Policy on an Ad Hoc Basis for the Special Functions]
-
-All of the special functions in this library come in two overloaded forms,
-one with a final "policy" parameter, and one without. For example:
-
- namespace boost{ namespace math{
-
- template <class RealType, class Policy>
- RealType tgamma(RealType, const Policy&);
-
- template <class RealType>
- RealType tgamma(RealType);
-
- }} // namespaces
-
-Normally, the second version is just a forwarding wrapper to the first
-like this:
-
- template <class RealType>
- inline RealType tgamma(RealType x)
- {
- return tgamma(x, policies::policy<>());
- }
-
-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 `tgamma` to behave in a C-compatible
-fashion and set `::errno` when an error occurs, and never
-throw an exception:
-
-[import ../example/policy_eg_1.cpp]
-
-[policy_eg_1]
-
-which outputs:
-
-[pre
-Result of tgamma(30000) is: 1.#INF
-errno = 34
-Result of tgamma(-10) is: 1.#QNAN
-errno = 33
-]
-
-Alternatively, for ad hoc use, we can use the `make_policy`
-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:
-
-[import ../example/policy_eg_2.cpp]
-
-[policy_eg_2]
-
-[endsect][/section:ad_hoc_sf_policies Changing the Policy on an Ad Hoc Basis for the Special Functions]
-
-[section:namespace_policies Setting Policies at Namespace or Translation Unit Scope]
-
-Sometimes what you want to do is just change a set of policies within
-the current scope: the one thing you should not do in this situation
-is use the configuration macros, as this can lead to "One Definition
-Rule" violations. Instead this library provides a pair of macros
-especially for this purpose.
-
-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(['Policy]). This
-macro should be used either inside a unique namespace set aside for the
-purpose, or an unnamed namespace if you just want the functions
-visible in global scope for the current file only.
-
-[import ../example/policy_eg_4.cpp]
-
-[policy_eg_4]
-
-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:
-
-[import ../example/policy_eg_5.cpp]
-
-[policy_eg_5]
-
-Handling 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:
-
- BOOST_MATH_DECLARE_DISTRIBUTIONS(double, mypolicy)
-
-Results a set of typedefs being defined like this:
-
- typedef boost::math::normal_distribution<double, mypolicy> normal;
-
-The name of each typedef is the same as the name of the distribution
-class template, but without the "_distribution" suffix.
-
-[import ../example/policy_eg_6.cpp]
-
-[policy_eg_6]
-
-[note
-There is an important limitation to note: you can not use the macros
-BOOST_MATH_DECLARE_DISTRIBUTIONS and BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS
-['in the same namespace], as doing so creates ambiguities between functions
-and distributions of the same name.
-]
-
-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:
-
-[import ../example/policy_eg_7.cpp]
-
-[policy_eg_7]
-
-[endsect][/section:namespace_policies Setting Policies at Namespace or Translation Unit Scope]
-
-[section:user_defined_error_policies Calling User Defined Error Handlers]
-
-[import ../example/policy_eg_8.cpp]
-
-[policy_eg_8]
-
-[import ../example/policy_eg_9.cpp]
-
-[policy_eg_9]
-
-[endsect][/section:user_defined_error_policies Calling User Defined Error Handlers]
-
-[section:understand_dis_quant Understanding Quantiles of Discrete Distributions]
-
-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.
-
-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:
-
-[$../graphs/binomial_pdf.png]
-
-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:
-
-[$../graphs/binomial_quantile_1.png]
-
-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:
-
-* We could round the result down to 18.
-* We could round the result up to 19.
-
-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).
-
-By using policies we can offer any of the above as options, but that
-still leaves the question: ['What is actually the right thing to do?]
-
-And in particular: ['What policy should we use by default?]
-
-In coming to an answer we should realise that:
-
-* 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.
-* Normally people calculate quantiles so that they can perform
-a test of some kind: ['"If the random variable is less than N
-then we can reject our null-hypothesis with 90% confidence."]
-
-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
-['[*at least] 95% of the probability to the right of the value chosen,
-and [*no more than] 5% of the probability to the left of the value chosen.]
-
-In the above binomial example we would therefore round the result down to 18.
-
-The converse applies to upper-quantiles: If the probability is greater than
-0.5 we would want to round the quantile up, ['so that [*at least] the requested
-probability is to the left of the value returned, and [*no more than] 1 - the
-requested probability is to the right of the value returned.]
-
-Likewise for two-sided intervals, we would round lower quantiles down,
-and upper quantiles up. This ensures that we have ['at least the requested
-probability in the central region] and ['no more than 1 minus the requested
-probability in the tail areas.]
-
-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 ['rounded outwards] so that
-['at least 90% of the probability] is in the central area:
-
-[$../graphs/binomial_pdf_3.png]
-
-So far so good, but there is in fact a trap waiting for the unwary here:
-
- quantile(binomial(50, 0.5), 0.05);
-
-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:
-
- cdf(binomial(50, 0.5), x) <= 0.05;
-
-However:
-
- quantile(binomial(50, 0.5), 0.95);
-
-returns 31, and indeed while there is no x less than 31 for which:
-
- cdf(binomial(50, 0.5), x) >= 0.95;
-
-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 /inclusive/ of the random variable. So while the left tail
-area /includes/ the quantile returned, the right tail area always excludes
-an upper quantile value: since that "belongs" to the central area.
-
-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.
-
-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:
-
- X <= L || X > U
-
-And the a variable X is inside the central region if:
-
- L < X <= U
-
-The moral here is to ['always be very careful with your comparisons
-when dealing with a discrete distribution], and if in doubt,
-['base your comparisons on CDF's instead].
-
-[heading Other Rounding Policies are Available]
-
-As you would expect from a section on policies, you won't be surprised
-to know that other rounding options are available:
-
-[variablelist
-
-[[integer_round_outwards]
- [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.
-
- This gives /no more than/ the requested probability
- in the tails, and /at least/ the requested probability
- in the central area.]]
-[[integer_round_inwards]
- [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.
-
- This gives /at least/ the requested probability
- in the tails, and /no more than/ the requested probability
- in the central area.]]
-[[integer_round_down][This policy will always round the result down
- no matter whether it is an upper or lower quantile]]
-[[integer_round_up][This policy will always round the result up
- no matter whether it is an upper or lower quantile]]
-[[integer_round_nearest][This policy will always round the result
- to the nearest integer
- no matter whether it is an upper or lower quantile]]
-[[real][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.]]
-
-]
-
-[import ../example/policy_eg_10.cpp]
-
-[policy_eg_10]
-
-[endsect]
-
-[endsect][/section:pol_Tutorial Policy Tutorial]
-
-
-[/ math.qbk
- Copyright 2007 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/polynomial.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/polynomial.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,94 +0,0 @@
-[section:polynomials Polynomials]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/tools/polynomial.hpp>
-``
-
- namespace boost{ namespace math{ namespace tools{
-
- template <class T>
- class polynomial
- {
- public:
- // typedefs:
- typedef typename std::vector<T>::value_type value_type;
- typedef typename std::vector<T>::size_type size_type;
-
- // construct:
- polynomial(){}
- template <class U>
- polynomial(const U* data, unsigned order);
- template <class U>
- polynomial(const U& point);
-
- // access:
- size_type size()const;
- size_type degree()const;
- value_type& operator[](size_type i);
- const value_type& operator[](size_type i)const;
-
- // operators:
- template <class U>
- polynomial& operator +=(const U& value);
- template <class U>
- polynomial& operator -=(const U& value);
- template <class U>
- polynomial& operator *=(const U& value);
- template <class U>
- polynomial& operator +=(const polynomial<U>& value);
- template <class U>
- polynomial& operator -=(const polynomial<U>& value);
- template <class U>
- polynomial& operator *=(const polynomial<U>& value);
- };
-
- template <class T>
- polynomial<T> operator + (const polynomial<T>& a, const polynomial<T>& b);
- template <class T>
- polynomial<T> operator - (const polynomial<T>& a, const polynomial<T>& b);
- template <class T>
- polynomial<T> operator * (const polynomial<T>& a, const polynomial<T>& b);
-
- template <class T, class U>
- polynomial<T> operator + (const polynomial<T>& a, const U& b);
- template <class T, class U>
- polynomial<T> operator - (const polynomial<T>& a, const U& b);
- template <class T, class U>
- polynomial<T> operator * (const polynomial<T>& a, const U& b);
-
- template <class U, class T>
- polynomial<T> operator + (const U& a, const polynomial<T>& b);
- template <class U, class T>
- polynomial<T> operator - (const U& a, const polynomial<T>& b);
- template <class U, class T>
- polynomial<T> operator * (const U& a, const polynomial<T>& b);
-
- template <class charT, class traits, class T>
- std::basic_ostream<charT, traits>& operator <<
- (std::basic_ostream<charT, traits>& os, const polynomial<T>& poly);
-
- }}} // namespaces
-
-[h4 Description]
-
-This is a fairly trivial class for polynomial manipulation.
-
-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.
-
-Advanced manipulations: the FFT, division, GCD, factorisation etc are
-not currently provided. Submissions for these are of course welcome :-)
-
-[endsect][/section:polynomials Polynomials]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/powers.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/powers.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,260 +0,0 @@
-[section:powers Logs, Powers, Roots and Exponentials]
-
-[section:log1p log1p]
-
-``
-#include <boost/math/special_functions/log1p.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` log1p(T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` log1p(T x, const ``__Policy``&);
-
- }} // namespaces
-
-Returns the natural logarithm of `x+1`.
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the return is `double` when /x/ is an integer type and T otherwise.
-
-[optional_policy]
-
-There are many situations where it is desirable to compute `log(x+1)`.
-However, for small `x` then `x+1` suffers from catastrophic cancellation errors
-so that `x+1 == 1` and `log(x+1) == 0`, when in fact for very small x, the
-best approximation to `log(x+1)` would be `x`. `log1p` calculates the best
-approximation to `log(1+x)` using a Taylor series expansion for accuracy
-(less than __te).
-Alternatively note that there are faster methods available,
-for example using the equivalence:
-
- log(1+x) == (log(1+x) * x) / ((1-x) - 1)
-
-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.
-
-Finally when BOOST_HAS_LOG1P is defined then the `float/double/long double`
-specializations of this template simply forward to the platform's
-native (POSIX) implementation of this function.
-
-[h4 Accuracy]
-
-For built in floating point types `log1p`
-should have approximately 1 epsilon accuracy.
-
-[h4 Testing]
-
-A mixture of spot test sanity checks, and random high precision test values
-calculated using NTL::RR at 1000-bit precision.
-
-[endsect]
-
-[section:expm1 expm1]
-
-``
-#include <boost/math/special_functions/expm1.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` expm1(T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` expm1(T x, const ``__Policy``&);
-
- }} // namespaces
-
-Returns e[super x] - 1.
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the return is `double` when /x/ is an integer type and T otherwise.
-
-[optional_policy]
-
-For small x, then __ex is very close to 1, as a result calculating __exm1 results
-in catastrophic cancellation errors when x is small. `expm1` calculates __exm1 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 __te).
-
-Finally when BOOST_HAS_EXPM1 is defined then the `float/double/long double`
-specializations of this template simply forward to the platform's
-native (POSIX) implementation of this function.
-
-[h4 Accuracy]
-
-For built in floating point types `expm1`
-should have approximately 1 epsilon accuracy.
-
-[h4 Testing]
-
-A mixture of spot test sanity checks, and random high precision test values
-calculated using NTL::RR at 1000-bit precision.
-
-[endsect]
-
-[section:cbrt cbrt]
-
-``
-#include <boost/math/special_functions/cbrt.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` cbrt(T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` cbrt(T x, const ``__Policy``&);
-
- }} // namespaces
-
-Returns the cubed root of x: x[super 1/3].
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the return is `double` when /x/ is an integer type and T otherwise.
-
-[optional_policy]
-
-Implemented using Halley iteration.
-
-[h4 Accuracy]
-
-For built in floating-point types `cbrt`
-should have approximately 2 epsilon accuracy.
-
-[h4 Testing]
-
-A mixture of spot test sanity checks, and random high precision test values
-calculated using NTL::RR at 1000-bit precision.
-
-[endsect]
-
-[section:sqrt1pm1 sqrt1pm1]
-
-``
-#include <boost/math/special_functions/sqrt1pm1.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` sqrt1pm1(T x);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` sqrt1pm1(T x, const ``__Policy``&);
-
- }} // namespaces
-
-Returns `sqrt(1+x) - 1`.
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the return is `double` when /x/ is an integer type and T otherwise.
-
-[optional_policy]
-
-This function is useful when you need the difference between sqrt(x) and 1, when
-x is itself close to 1.
-
-Implemented in terms of `log1p` and `expm1`.
-
-[h4 Accuracy]
-
-For built in floating-point types `sqrt1pm1`
-should have approximately 3 epsilon accuracy.
-
-[h4 Testing]
-
-A selection of random high precision test values
-calculated using NTL::RR at 1000-bit precision.
-
-[endsect]
-
-[section:powm1 powm1]
-
-``
-#include <boost/math/special_functions/powm1.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2>
- ``__sf_result`` powm1(T1 x, T2 y);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` powm1(T1 x, T2 y, const ``__Policy``&);
-
- }} // namespaces
-
-Returns x[super y ] - 1.
-
-The return type of this function is computed using the __arg_pomotion_rules
-when T1 and T2 are dufferent types.
-
-[optional_policy]
-
-There are two domains where this is useful: when y is very small, or when
-x is close to 1.
-
-Implemented in terms of `expm1`.
-
-[h4 Accuracy]
-
-Should have approximately 2-3 epsilon accuracy.
-
-[h4 Testing]
-
-A selection of random high precision test values
-calculated using NTL::RR at 1000-bit precision.
-
-[endsect]
-
-[section:hypot hypot]
-
- template <class T1, class T2>
- ``__sf_result`` hypot(T1 x, T2 y);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` hypot(T1 x, T2 y, const ``__Policy``&);
-
-__effects computes [equation hypot]
-in such a way as to avoid undue underflow and overflow.
-
-The return type of this function is computed using the __arg_pomotion_rules
-when T1 and T2 are of different types.
-
-[optional_policy]
-
-When calculating [equation hypot] it's quite easy for the intermediate terms to either
-overflow or underflow, even though the result is in fact perfectly representable.
-
-[h4 Implementation]
-
-The function is even and symmetric in x and y, so first take assume
-['x,y > 0] and ['x > y] (we can permute the arguments if this is not the case).
-
-Then if ['x * [epsilon][space] >= y] we can simply return /x/.
-
-Otherwise the result is given by:
-
-[equation hypot2]
-
-[endsect]
-
-
-[endsect][/section:powers Logs, Powers, Roots and Exponentials]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/rational.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/rational.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,176 +0,0 @@
-[section:rational Polynomial and Rational Function Evaluation]
-
-[h4 synopsis]
-
-``
-#include <boost/math/tools/rational.hpp>
-``
-
- // Polynomials:
- template <std::size_t N, class T, class V>
- V evaluate_polynomial(const T(&poly)[N], const V& val);
-
- template <std::size_t N, class T, class V>
- V evaluate_polynomial(const boost::array<T,N>& poly, const V& val);
-
- template <class T, class U>
- U evaluate_polynomial(const T* poly, U z, std::size_t count);
-
- // Even polynomials:
- template <std::size_t N, class T, class V>
- V evaluate_even_polynomial(const T(&poly)[N], const V& z);
-
- template <std::size_t N, class T, class V>
- V evaluate_even_polynomial(const boost::array<T,N>& poly, const V& z);
-
- template <class T, class U>
- U evaluate_even_polynomial(const T* poly, U z, std::size_t count);
-
- // Odd polynomials
- template <std::size_t N, class T, class V>
- V evaluate_odd_polynomial(const T(&a)[N], const V& z);
-
- template <std::size_t N, class T, class V>
- V evaluate_odd_polynomial(const boost::array<T,N>& a, const V& z);
-
- template <class T, class U>
- U evaluate_odd_polynomial(const T* poly, U z, std::size_t count);
-
- // Rational Functions:
- template <std::size_t N, class T, class V>
- V evaluate_rational(const T(&a)[N], const T(&b)[N], const V& z);
-
- template <std::size_t N, class T, class V>
- V evaluate_rational(const boost::array<T,N>& a, const boost::array<T,N>& b, const V& z);
-
- template <class T, class U, class V>
- V evaluate_rational(const T* num, const U* denom, V z, unsigned count);
-
-[h4 Description]
-
-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.
-
- template <std::size_t N, class T, class V>
- V evaluate_polynomial(const T(&poly)[N], const V& val);
-
- template <std::size_t N, class T, class V>
- V evaluate_polynomial(const boost::array<T,N>& poly, const V& val);
-
- template <class T, class U>
- U evaluate_polynomial(const T* poly, U z, std::size_t count);
-
-Evaluates the [@http://en.wikipedia.org/wiki/Polynomial polynomial] described by
-the coefficients stored in /poly/.
-
-If the size of the array is specified at runtime, then the polynomial
-most have order /count-1/ with /count/ coefficients. Otherwise it has
-order /N-1/ with /N/ coefficients.
-
-Coefficients should be stored such that the coefficients for the x[super i ] terms
-are in poly[i].
-
-The types of the coefficients and of variable
-/z/ may differ as long as /*poly/ is convertible to type /U/.
-This allows, for example, for the coefficient table
-to be a table of integers if this is appropriate.
-
- template <std::size_t N, class T, class V>
- V evaluate_even_polynomial(const T(&poly)[N], const V& z);
-
- template <std::size_t N, class T, class V>
- V evaluate_even_polynomial(const boost::array<T,N>& poly, const V& z);
-
- template <class T, class U>
- U evaluate_even_polynomial(const T* poly, U z, std::size_t count);
-
-As above, but evaluates an even polynomial: one where all the powers
-of /z/ are even numbers. Equivalent to calling
-`evaluate_polynomial(poly, z*z, count)`.
-
- template <std::size_t N, class T, class V>
- V evaluate_odd_polynomial(const T(&a)[N], const V& z);
-
- template <std::size_t N, class T, class V>
- V evaluate_odd_polynomial(const boost::array<T,N>& a, const V& z);
-
- template <class T, class U>
- U evaluate_odd_polynomial(const T* poly, U z, std::size_t count);
-
-As above but evaluates a polynomial where all the powers are odd numbers.
-Equivalent to `evaluate_polynomial(poly+1, z*z, count-1) * z + poly[0]`.
-
- template <std::size_t N, class T, class U, class V>
- V evaluate_rational(const T(&num)[N], const U(&denom)[N], const V& z);
-
- template <std::size_t N, class T, class U, class V>
- V evaluate_rational(const boost::array<T,N>& num, const boost::array<U,N>& denom, const V& z);
-
- template <class T, class U, class V>
- V evaluate_rational(const T* num, const U* denom, V z, unsigned count);
-
-Evaluates the rational function (the ratio of two polynomials) described by
-the coefficients stored in /num/ and /demom/.
-
-If the size of the array is specified at runtime then both
-polynomials most have order /count-1/ with /count/ coefficients.
-Otherwise both polynomials have order /N-1/ with /N/ coefficients.
-
-Array /num/ describes the numerator, and /demon/ the denominator.
-
-Coefficients should be stored such that the coefficients for the x[super i ] terms
-are in num[i] and denom[i].
-
-The types of the coefficients and of variable
-/v/ may differ as long as /*num/ and /*denom/ are convertible to type /V/.
-This allows, for example, for one or both of the coefficient tables
-to be a table of integers if this is appropriate.
-
-These functions are designed to safely evaluate the result, even when the value
-/z/ 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 /z/ 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.
-
-[h4 Implementation]
-
-Polynomials are evaluated by
-[@http://en.wikipedia.org/wiki/Horner_algorithm Horners method].
-If the array size is known at
-compile time then the functions dispatch to size-specific implementations
-that unroll the evaluation loop.
-
-Rational evaluation is by
-[@http://en.wikipedia.org/wiki/Horner_algorithm Horners method]:
-with the two polynomials being evaluated
-in parallel to make the most of the processors floating-point pipeline.
-If /v/ is greater than one, then the polynomials are evaluated in reverse
-order as polynomials in ['1\/v]: this avoids unnecessary numerical overflow when the
-coefficients are large.
-
-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
-[link math_toolkit.perf.tuning documented here]. However, the performance
-benefits to be gained from these are marginal on most current hardware,
-consequently it's best to run the
-[link math_toolkit.perf.perf_test_app performance test application] before
-changing the default settings.
-
-[endsect][/section:rational Polynomial and Rational Function Evaluation]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/references.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/references.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,81 +0,0 @@
-[section:refs References]
-
-[h4 General references]
-
-(Specific detailed sources for individual functions and distributions
-are given at the end of each individual section).
-
-[@http://dlmf.nist.gov/about/ DLMF (NIST Digital Library of Mathematical Functions)]
-is intended to be a replacement for the legendary
-Abramowitz and Stegun's Handbook of Mathematical Functions,
-now scheduled to be completed in 2007.
-
-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..
-
-[@http://functions.wolfram.com/ 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.
-
-[@http://www.itl.nist.gov/div898/handbook/index.htm NIST/SEMATECH e-Handbook of Statistical Methods]
-
-[@http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/DiscreteDistributions.html Mathematica Documentation: DiscreteDistributions]
-The Wolfram Research Documentation Center is a collection of online reference materials about Mathematica, CalculationCenter, and other Wolfram Research products.
-
-[@http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/ContinuousDistributions.html Mathematica Documentation: ContinuousDistributions]
-The Wolfram Research Documentation Center is a collection of online reference materials about Mathematica, CalculationCenter, and other Wolfram Research products.
-
-Statistical Distributions (Wiley Series in Probability & Statistics) (Paperback)
-by N.A.J. Hastings, Brian Peacock, Merran Evans, ISBN: 0471371246, Wiley 2000.
-
-[@http://bh0.physics.ubc.ca/People/matt/Doc/ThesesOthers/Phd/pugh.pdf pugh.pdf (application/pdf Object)]
-Pugh Msc Thesis on the Lanczzos approximation to the gamma function.
-
-[@www.open-std.org/jtc1/sc22/wg21/docs/papers/2003 N1514, 03-0097, A Proposal to Add Mathematical Special Functions to the C++ Standard Library (version 2), Walter E. Brown]
-
-[h4 Calculators* that we found (and used to cross-check - as far as their widely-varying accuracy allowed).]
-
-[@http://www.adsciengineering.com/bpdcalc/ http://www.adsciengineering.com/bpdcalc/] Binomial Probability Distribution Calculator.
-
-[h4 Other Libraries]
-
-[@http://www.moshier.net/#Cephes Cephes library] by Shephen Moshier and his book:
-
-Methods and programs for mathematical functions, Stephen L B Moshier, Ellis Horwood (1989) ISBN 0745802893 0470216093 provided inspiration.
-
-[@http://www.moshier.net/cephes28.zip 100-decimal digit calculator] provided some spot values.
-
-[@http://www.csit.fsu.edu/~burkardt/cpp_src/dcdflib/dcdflib.html C++ version].
-
-[@lib.stat.cmu.edu/general/cdflib CDFLIB Library of Fortran Routines for Cumulative Distribution functions.]
-
-[@http://www.csit.fsu.edu/~burkardt/f_src/dcdflib/dcdflib.html DCDFLIB C++ version]
-DCDFLIB is a library of C++ routines, using double precision arithmetic, for evaluating cumulative probability density functions.
-
-[@http://www.softintegration.com/docs/package/chnagstat/ http://www.softintegration.com/docs/package/chnagstat/]
-
-[@http://www.nag.com/numeric/numerical_libraries.asp NAG ]libraries.
-
-[@http://www.mathcad.com MathCAD]
-
-[@http://www.vni.com/products/imsl/jmsl/v30/api/com/imsl/stat/Cdf.html JMSL Numerical Library] (Java).
-
-John F Hart, Computer Approximations, (1978) ISBN 0 088275 642-7.
-
-William J Cody, Software Manual for the Elementary Functions, Prentice-Hall (1980) ISBN 0138220646.
-
-Nico Temme, Special Functions, An Introduction to the Classical Functions of Mathematical Physics, Wiley, ISBN: 0471-11313-1 (1996) who also gave valueable advice.
-
-[@http://www.cas.lancs.ac.uk/glossary_v1.1/prob.html#probdistn Statistics Glossary], Valerie Easton and John H. McColl.
-
-[endsect] [/section:references References]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/relative_error.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/relative_error.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,134 +0,0 @@
-[section:error_test Relative Error and Testing]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/tools/test.hpp>
-``
-
- template <class T>
- T relative_error(T a, T b);
-
- template <class A, class F1, class F2>
- test_result<see-below> test(const A& a, F1 test_func, F2 expect_func);
-
-[h4 Description]
-
- template <class T>
- T relative_error(T a, T v);
-
-Returns the relative error between /a/ and /v/ using the usual formula:
-
-[equation error1]
-
-In addition the value returned is zero if:
-
-* Both /a/ and /v/ are infinite.
-* Both /a/ and /v/ are denormalised numbers or zero.
-
-Otherwise if only one of /a/ and /v/ is zero then the value returned is 1.
-
- template <class A, class F1, class F2>
- test_result<see-below> test(const A& a, F1 test_func, F2 expect_func);
-
-This function is used for testing a function against tabulated test data.
-
-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:
-
-[variablelist
-[[`unsigned worst()const;`][Returns the row at which the worst error occurred.]]
-[[`T min()const;`][Returns the smallest relative error found.]]
-[[`T max()const;`][Returns the largest relative error found.]]
-[[`T mean()const;`][Returns the mean error found.]]
-[[`boost::uintmax_t count()const;`][Returns the number of test cases.]]
-[[`T variance()const;`][Returns the variance of the errors found.]]
-[[`T variance1()const;`][Returns the unbiased variance of the errors found.]]
-[[`T rms()const`][Returns the Root Mean Square, or quadratic mean of the errors.]]
-[[`test_result& operator+=(const test_result& t)`][Combines two test_result's into
-a single result.]]
-]
-
-The template parameter of test_result, is the same type as the values in the two
-dimensional array passed to function /test/, roughly that's
-`A::value_type::value_type`.
-
-Parameter /a/ 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
-[^boost::array]. Each row
-of /a/ should contain all the parameters that are passed to the function
-under test as well as the expected result.
-
-Parameter /test_func/ is the function under test, it is invoked with each row
-of test data in /a/. Typically type F1 is created with Boost.Lambda: see
-the example below.
-
-Parameter /expect_func/ is a functor that extracts the expected result
-from a row of test data in /a/. Typically type F2 is created with Boost.Lambda: see
-the example below.
-
-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 `std::cerr`,
-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).
-
-[h4 Example]
-
-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.
-
- static const boost::array<boost::array<TestType, 3>, NumberOfTests>
- factorials = {
- /* big array of test data goes here */
- };
-
-Now we can invoke the test function to test tgamma:
-
- using namespace boost::math::tools;
- using namespace boost::lambda;
-
- // get a pointer to the function under test:
- TestType (*funcp)(TestType) = boost::math::tgamma;
-
- // declare something to hold the result:
- test_result<TestType> result;
- //
- // and test tgamma against data:
- //
- result = test(
- factorials,
- bind(funcp, ret<TestType>(_1[0])), // calls tgamma with factorials[row][0]
- ret<TestType>(_1[1]) // extracts the expected result from factorials[row][1]
- );
- //
- // Print out some results:
- //
- std::cout << "The Mean was " << result.mean() << std::endl;
- std::cout << "The worst error was " << (result.max)() << std::endl;
- std::cout << "The worst error was at row " << result.worst_case() << std::endl;
- //
- // same again with lgamma this time:
- //
- funcp = boost::math::lgamma;
- result = test(
- factorials,
- bind(funcp, ret<TestType>(_1[0])), // calls tgamma with factorials[row][0]
- ret<TestType>(_1[2]) // extracts the expected result from factorials[row][2]
- );
- //
- // etc ...
- //
-
-[endsect][/section:error_test Relative Error and Testing]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/remez.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/remez.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,371 +0,0 @@
-[section:remez The Remez Method]
-
-The [@http://en.wikipedia.org/wiki/Remez_algorithm 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.
-
-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.
-
-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:
-
-E[sub abs](x) = f(x) - R(x)
-
-which is expressed in terms of absolute error, but we can equally use
-relative error:
-
-E[sub rel](x) = (f(x) - R(x)) / |f(x)|
-
-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.
-
-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:
-
-* 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.
-* The error function has N+1 roots, and N+2 extrema (minima and maxima).
-* The extrema alternate in sign, and all have the same magnitude.
-
-That means that if we know the location of the extrema of the error function
-then we can write N+2 simultaneous equations:
-
-R(x[sub i]) + (-1)[super i]E = f(x[sub i])
-
-where E is the maximal error term, and x[sub i] 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.
-
-['Unfortunately we don't know where the extrema of the error function are located!]
-
-[h4 The Remez Method]
-
-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.
-
-In the following discussion we'll use a concrete example to illustrate
-the Remez method: an approximation to the function e[super x][space] over
-the range \[-1, 1\].
-
-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).
-
-In order to obtain the N+1 coefficients of the interpolated polynomial
-we need N+1 points (x[sub 0]...x[sub N]): with our interpolated form
-passing through each of those points
-that yields N+1 simultaneous equations:
-
-f(x[sub i]) = P(x[sub i]) = c[sub 0] + c[sub 1]x[sub i] ... + c[sub N]x[sub i][super N]
-
-Which can be solved for the coefficients c[sub 0]...c[sub N] in P(x).
-
-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 /relative error/
-we get the following error function:
-
-[$../graphs/remez-2.png]
-
-Which has a peak relative error of 1.2x10[super -3].
-
-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 ['Chebyshev control points].
-
-[note
-In the simple case of a polynomial approximation, by interpolating through
-the roots of a Chebyshev polynomial we have in fact created a ['Chebyshev
-approximation] to the function: in terms of /absolute error/
-this is the best a priori choice for the interpolated form we can
-achieve, and typically is very close to the minimax solution.
-
-However, if we want to optimise for /relative error/, or if the approximation
-is a rational function, then the initial Chebyshev solution can be quite far
-from the ideal minimax solution.
-
-A more technical discussion of the theory involved can be found in this
-[@http://math.fullerton.edu/mathews/n2003/ChebyshevPolyMod.html online course].]
-
-[h4 Remez Step 1]
-
-The first step in the Remez method, given our current set of
-N+2 Chebyshev control points x[sub i], is to solve the N+2 simultaneous
-equations:
-
-P(x[sub i]) + (-1)[super i]E = f(x[sub i])
-
-To obtain the error term E, and the coefficients of the polynomial P(x).
-
-This gives us a new approximation to f(x) that has the same error /E/ at
-each of the control points, and whose error function ['alternates in sign]
-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:
-
-[$../graphs/remez-3.png]
-
-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[super -4].
-
-[h4 Remez Step 2]
-
-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.
-
-We now have a choice: multi-point exchange, or single point exchange.
-
-In single point exchange, we move the control point nearest to the largest extrema to
-the absissa value of the extrema.
-
-In multi-point exchange we swap all the current control points, for the locations
-of the extrema.
-
-In our example we perform multi-point exchange.
-
-[h4 Iteration]
-
-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.
-
-For our current example, two more iterations converges on a minimax
-solution with a peak relative error of
-5x10[super -4] and an error function that looks like:
-
-[$../graphs/remez-4.png]
-
-[h4 Rational Approximations]
-
-If we wish to extend the Remez method to a rational approximation of the form
-
-f(x) = R(x) = P(x) / Q(x)
-
-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 it's leading coefficient is 1, giving
-N+M+1 polynomial coefficients in total, plus the error term E.
-
-The simultaneous equations to be solved are now:
-
-P(x[sub i]) / Q(x[sub i]) + (-1)[super i]E = f(x[sub i])
-
-Evaluated at the N+M+2 control points x[sub i].
-
-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!
-
-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.
-
-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[super x], we obtained 5x10[super -4] 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[super -5]. That's a 5 fold increase in accuracy, for the same number
-of terms overall.
-
-[h4 Practical Considerations]
-
-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.
-
-So far we have used a direct approximation:
-
-f(x) = R(x)
-
-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.
-
-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:
-
-f(x) = g(x) + R(x)
-
-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:
-
-f(x) = g(x)(c + R(x))
-
-Will yield a much better solution: here /c/ is a constant that is the approximate
-value of f(x)\/g(x) and R(x) is typically tiny compared to /c/. In this situation
-if R(x) is optimised for absolute error, then as long as its error is small compared
-to the constant /c/, that error will effectively get wiped out when R(x) is added to
-/c/.
-
-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 __erfc becomes proportional to
-e[super -x[super 2]]\/x as x becomes large. Therefore using:
-
-erfc(z) = (C + R(x)) e[super -x[super 2]]/x
-
-as the approximating form seems like an obvious thing to try, and does indeed
-yield a useful approximation.
-
-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.
-
-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[super x][space] over \[-1,1\], the initial
-interpolated form was some way from the minimax solution:
-
-[$../graphs/remez-2.png]
-
-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[super -3][space]to 6x10[super -4]:
-
-[$../graphs/remez-5.png]
-
-It's clearly still not ideal, but it is only a few percent away from
-our desired minimax solution (5x10[super -4]).
-
-[h4 Remez Method Checklist]
-
-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.
-
-* Is the function smooth enough? Can it be better separated into
-a rapidly changing part, and an asymptotic part?
-* 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.
-* 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.
-* Try skewing the initial interpolated approximation to minimise the
-error before you begin the Remez steps.
-* If the approximation won't converge or is ill-conditioned from one starting
-location, try starting from a different location.
-* 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.
-* 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.
-* Keep absissa values small: use a change of variable to keep the abscissa
-over, say \[0, b\], for some smallish value /b/.
-
-[h4 References]
-
-The original references for the Remez Method and it's extension
-to rational functions are unfortunately in Russian:
-
-Remez, E.Ya., ['Fundamentals of numerical methods for Chebyshev approximations],
-"Naukova Dumka", Kiev, 1969.
-
-Remez, E.Ya., Gavrilyuk, V.T., ['Computer development of certain approaches
-to the approximate construction of solutions of Chebyshev problems
-nonlinearly depending on parameters], Ukr. Mat. Zh. 12 (1960), 324-338.
-
-Gavrilyuk, V.T., ['Generalization of the first polynomial algorithm of
-E.Ya.Remez for the problem of constructing rational-fractional
-Chebyshev approximations], Ukr. Mat. Zh. 16 (1961), 575-585.
-
-Some English language sources include:
-
-Fraser, W., Hart, J.F., ['On the computation of rational approximations
-to continuous functions], Comm. of the ACM 5 (1962), 401-403, 414.
-
-Ralston, A., ['Rational Chebyshev approximation by Remes' algorithms],
-Numer.Math. 7 (1965), no. 4, 322-330.
-
-A. Ralston, ['Rational Chebyshev approximation, Mathematical
-Methods for Digital Computers v. 2] (Ralston A., Wilf H., eds.),
-Wiley, New York, 1967, pp. 264-284.
-
-Hart, J.F. e.a., ['Computer approximations], Wiley, New York a.o., 1968.
-
-Cody, W.J., Fraser, W., Hart, J.F., ['Rational Chebyshev approximation
-using linear equations], Numer.Math. 12 (1968), 242-251.
-
-Cody, W.J., ['A survey of practical rational and polynomial
-approximation of functions], SIAM Review 12 (1970), no. 3, 400-423.
-
-Barrar, R.B., Loeb, H.J., ['On the Remez algorithm for non-linear
-families], Numer.Math. 15 (1970), 382-391.
-
-Dunham, Ch.B., ['Convergence of the Fraser-Hart algorithm for rational
-Chebyshev approximation], Math. Comp. 29 (1975), no. 132, 1078-1082.
-
-G. L. Litvinov, ['Approximate construction of rational
-approximations and the effect of error autocorrection],
-Russian Journal of Mathematical Physics, vol.1, No. 3, 1994.
-
-[endsect][/section:remez The Remez Method]
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/result_type_calc.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/result_type_calc.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,79 +0,0 @@
-
-[section:result_type Calculation of the Type of the Result]
-
-The functions in this library are all overloaded to accept
-mixed floating point (or mixed integer and floating point type)
-arguments. So for example:
-
- foo(1.0, 2.0);
- foo(1.0f, 2);
- foo(1.0, 2L);
-
-etc, are all valid calls, as long as "foo" is a function taking two
-floating-point arguments. But that leaves the question:
-
-[blurb ['"Given a special function with N arguments of
-types T1, T2, T3 ... TN, then what type is the result?"]]
-
-[*If all the arguments are of the same (floating point) type then the
-result is the same type as the arguments.]
-
-Otherwise, the type of the result
-is computed using the following logic:
-
-# Any arguments that are not template arguments are disregarded from
-further analysis.
-# 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.
-# 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.
-# If any of the arguments is of type `long double`, then the result is of type
-`long double`.
-# If any of the arguments is of type `double`, then the result is of type
-`double`.
-# Otherwise the result is of type `float`.
-
-For example:
-
- cyl_bessel(2, 3.0);
-
-Returns a `double` result, as does:
-
- cyl_bessel(2, 3.0f);
-
-as in this case the integer first argument is treated as a `double` and takes
-precedence over the `float` second argument. To get a `float` result we would need
-all the arguments to be of type float:
-
- cyl_bessel_j(2.0f, 3.0f);
-
-When one or more of the arguments is not a template argument then it
-doesn't effect the return type at all, for example:
-
- sph_bessel(2, 3.0f);
-
-returns a `float`, 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 `float`.
-
-And for user defined types, all of the following return an NTL::RR result:
-
- cyl_bessel_j(0, NTL::RR(2));
-
- cyl_bessel_j(NTL::RR(2), 3);
-
- cyl_bessel_j(NTL::quad_float(2), NTL::RR(3));
-
-In the last case, quad_float is convertible to RR, but not vice-versa, so
-the result will be an NTL::RR. Note that this assumes that you are using
-a [link math_toolkit.using_udt.use_ntl patched NTL library].
-
-These rules are chosen to be compatible with the behaviour of
-['ISO/IEC 9899:1999 Programming languages - C]
-and with the
-[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Draft Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph 5].
-
-[endsect]
-

Deleted: sandbox/math_toolkit/libs/math/doc/roadmap.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/roadmap.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,66 +0,0 @@
-[template history[]
-[h4 Milestone 5: Post Review First Official Release]
-
-* Added Policy based framework that allows fine grained control
-over function behaviour.
-* [*Breaking change:] Changed default behaviour for domain, pole and overflow errors
-to throw an exception (based on review feedback), this
-behaviour can be customised using __Policy's.
-* [*Breaking change:] Changed exception thrown when an internal evaluation error
-occurs to boost::math::evaluation_error.
-* [*Breaking change:] 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 __Policy's.
-* Polynomial/rational function evaluation is now customisable and hopefully
-faster than before.
-* Added performance test program.
-
-[h4 Milestone 4: Second Review Candidate (1st March 2007)]
-
-* Moved Xiaogang Zhang's Bessel Functions code into the library,
-and brought them into line with the rest of the code.
-* Added C# "Distribution Explorer" demo application.
-
-[h4 Milestone 3: First Review Candidate (31st Dec 2006)]
-
-* Implemented the main probability distribution and density functions.
-* Implemented digamma.
-* Added more factorial functions.
-* Implemented the Hermite, Legendre and Laguerre polynomials plus the
-spherical harmonic functions from TR1.
-* Moved Xiaogang Zhang's elliptic integral code into the library,
-and brought them into line with the rest of the code.
-* Moved Hubert Holin's existing Boost.Math special functions
-into this library and brought them into line with the rest of the code.
-
-[h4 Milestone 2: Released September 10th 2006]
-
-* Implement preview release of the statistical distributions.
-* Added statistical distributions tutorial.
-* Implemented root finding algorithms.
-* Implemented the inverses of the incomplete gamma and beta functions.
-* Rewrite erf/erfc as rational approximations (valid to 128-bit precision).
-* 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.
-* Improved lgamma near 1 and 2 (rational approximations).
-* Improved erf/erfc inverses (rational approximations).
-* Implemented Rational function generation (the Remez method).
-
-[h4 Milestone 1: Released March 31st 2006]
-
-* Implement gamma/beta/erf functions along with their incomplete counterparts.
-* Generate high quality test data, against which future improvements can be judged.
-* Provide tools for the evaluation of infinite series, continued fractions, and
-rational functions.
-* Provide tools for testing against tabulated test data, and collecting statistics
-on error rates.
-* Provide sufficient docs for people to be able to find their way around the library.
-
-]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/roots.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/roots.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,245 +0,0 @@
-[section:roots Root Finding With Derivatives]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/tools/roots.hpp>
-``
-
- namespace boost{ namespace math{ namespace tools{
-
- template <class F, class T>
- T newton_raphson_iterate(F f, T guess, T min, T max, int digits);
-
- template <class F, class T>
- T newton_raphson_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter);
-
- template <class F, class T>
- T halley_iterate(F f, T guess, T min, T max, int digits);
-
- template <class F, class T>
- T halley_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter);
-
- template <class F, class T>
- T schroeder_iterate(F f, T guess, T min, T max, int digits);
-
- template <class F, class T>
- T schroeder_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter);
-
- }}} // namespaces
-
-[h4 Description]
-
-These functions all perform iterative root finding: `newton_raphson_iterate`
-performs second order [link newton Newton Raphson iteration], while `halley_iterate` and
-`schroeder_iterate` perform third order [link halley Halley] and
-[link schroeder Schroeder] iteration respectively.
-
-The functions all take the same parameters:
-
-[variablelist Parameters of the root finding functions
-[[F f] [Type F must be a callable function object that accepts one parameter and
- returns a tuple:
-
-For the second order iterative methods (Newton Raphson)
- the tuple should have two elements containing the evaluation
- of the function and it's first derivative.
-
-For the third order methods (Halley and Schroeder) the tuple
- should have three elements containing the evaluation of
- the function and its first and second derivatives.]]
-[[T guess] [The initial starting value.]]
-[[T min] [The minimum possible value for the result, this is used as an initial lower bracket.]]
-[[T max] [The maximum possible value for the result, this is used as an initial upper bracket.]]
-[[int digits] [The desired number of binary digits.]]
-[[uintmax_t max_iter] [An optional maximum number of iterations to perform.]]
-]
-
-When using these functions you should note that:
-
-* 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.
-* 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 F is defined to return an arbitrarily small value ['of the correct sign] rather
-than zero.
-* 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.
-* 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.
-* The value of /digits/ 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 /digits/ 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, /digits/ should be set by experiment so that the final
-iteration just takes the next value into the zone where f(x) becomes inaccurate.
-* 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.
-
-[#newton]
-[h4 Newton Raphson Method]
-Given an initial guess x0 the subsequent values are computed using:
-
-[equation roots1]
-
-Out of bounds steps revert to bisection of the current bounds.
-
-Under ideal conditions, the number of correct digits doubles with each iteration.
-
-[#halley]
-[h4 Halley's Method]
-
-Given an initial guess x0 the subsequent values are computed using:
-
-[equation roots2]
-
-Over-compensation by the second derivative (one which would proceed
-in the wrong direction) causes the method to
-revert to a Newton-Raphson step.
-
-Out of bounds steps revert to bisection of the current bounds.
-
-Under ideal conditions, the number of correct digits trebles with each iteration.
-
-[#schroeder]
-[h4 Schroeder's Method]
-
-Given an initial guess x0 the subsequent values are computed using:
-
-[equation roots3]
-
-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%.
-
-Out of bounds steps revert to bisection of the current bounds.
-
-Under ideal conditions, the number of correct digits trebles with each iteration.
-
-[h4 Example]
-
-Lets suppose we want to find the cube root of a number, the equation we want to
-solve along with its derivatives are:
-
-[equation roots4]
-
-To begin with lets solve the problem using Newton Raphson iterations, we'll
-begin be defining a function object that returns the evaluation of the function
-to solve, along with its first derivative:
-
- template <class T>
- struct cbrt_functor
- {
- cbrt_functor(T const& target) : a(target){}
- std::tr1::tuple<T, T> operator()(T const& z)
- {
- T sqr = z * z;
- return std::tr1::make_tuple(sqr * z - a, 3 * sqr);
- }
- private:
- T a;
- };
-
-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:
-
- template <class T>
- T cbrt(T z)
- {
- using namespace std;
- int exp;
- frexp(z, &exp);
- T min = ldexp(0.5, exp/3);
- T max = ldexp(2.0, exp/3);
- T guess = ldexp(1.0, exp/3);
- int digits = std::numeric_limits<T>::digits;
- return tools::newton_raphson_iterate(detail::cbrt_functor<T>(z), guess, min, max, digits);
- }
-
-Using the test data in libs/math/test/cbrt_test.cpp 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 its 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 `std::numeric_limits<T>::digits * 2 / 3` 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.
-
-Note also that the above code omits error handling, and does not handle
-negative values of z correctly. That will be left as an exercise for the reader!
-
-Now lets adapt the functor slightly to return the second derivative as well:
-
- template <class T>
- struct cbrt_functor
- {
- cbrt_functor(T const& target) : a(target){}
- std::tr1::tuple<T, T, T> operator()(T const& z)
- {
- T sqr = z * z;
- return std::tr1::make_tuple(sqr * z - a, 3 * sqr, 6 * z);
- }
- private:
- T a;
- };
-
-And then adapt the `cbrt` function to use Halley iterations:
-
- template <class T>
- T cbrt(T z)
- {
- using namespace std;
- int exp;
- frexp(z, &exp);
- T min = ldexp(0.5, exp/3);
- T max = ldexp(2.0, exp/3);
- T guess = ldexp(1.0, exp/3);
- int digits = std::numeric_limits<T>::digits / 2;
- return tools::halley_iterate(detail::cbrt_functor<T>(z), guess, min, max, digits);
- }
-
-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.
-
-Just to complete the picture, we could have called `schroeder_iterate` 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".
-
-Finally, had we called cbrt with [@http://shoup.net/ntl/doc/RR.txt 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. Or to put it another way: ['nothing beats
-a really good initial guess!]
-
-[endsect][/section:roots Root Finding With Derivatives]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/roots_without_derivatives.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/roots_without_derivatives.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,419 +0,0 @@
-[section:roots2 Root Finding Without Derivatives]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/tools/roots.hpp>
-``
-
- namespace boost{ namespace math{ namespace tools{
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- bisect(
- F f,
- T min,
- T max,
- Tol tol,
- boost::uintmax_t& max_iter);
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- bisect(
- F f,
- T min,
- T max,
- Tol tol);
-
- template <class F, class T, class Tol, class ``__Policy``>
- std::pair<T, T>
- bisect(
- F f,
- T min,
- T max,
- Tol tol,
- boost::uintmax_t& max_iter,
- const ``__Policy``&);
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- bracket_and_solve_root(
- F f,
- const T& guess,
- const T& factor,
- bool rising,
- Tol tol,
- boost::uintmax_t& max_iter);
-
- template <class F, class T, class Tol, class ``__Policy``>
- std::pair<T, T>
- bracket_and_solve_root(
- F f,
- const T& guess,
- const T& factor,
- bool rising,
- Tol tol,
- boost::uintmax_t& max_iter,
- const ``__Policy``&);
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- toms748_solve(
- F f,
- const T& a,
- const T& b,
- Tol tol,
- boost::uintmax_t& max_iter);
-
- template <class F, class T, class Tol, class ``__Policy``>
- std::pair<T, T>
- toms748_solve(
- F f,
- const T& a,
- const T& b,
- Tol tol,
- boost::uintmax_t& max_iter,
- const ``__Policy``&);
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- toms748_solve(
- F f,
- const T& a,
- const T& b,
- const T& fa,
- const T& fb,
- Tol tol,
- boost::uintmax_t& max_iter);
-
- template <class F, class T, class Tol, class ``__Policy``>
- std::pair<T, T>
- toms748_solve(
- F f,
- const T& a,
- const T& b,
- const T& fa,
- const T& fb,
- Tol tol,
- boost::uintmax_t& max_iter,
- const ``__Policy``&);
-
- // Termination conditions:
- template <class T>
- struct eps_tolerance;
-
- struct equal_floor;
- struct equal_ceil;
- struct equal_nearest_integer;
-
- }}} // namespaces
-
-[h4 Description]
-
-These functions solve the root of some function /f(x)/ without the
-need for the derivatives of /f(x)/. The functions here that use TOMS
-Algorithm 748 are asymptotically the most efficient known, and have
-been shown to be optimal for a certain classes of smooth functions.
-
-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.
-
-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 /never/
-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 [@http://en.wikipedia.org/wiki/Brent%27s_method Brent or Dekker)]
-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:
-/eps_tolerance/ causes termination when the relative error in the enclosing
-interval is below a certain threshold, while /equal_floor/ and /equal_ceil/ 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.
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- bisect(
- F f,
- T min,
- T max,
- Tol tol,
- boost::uintmax_t& max_iter);
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- bisect(
- F f,
- T min,
- T max,
- Tol tol);
-
- template <class F, class T, class Tol, class ``__Policy``>
- std::pair<T, T>
- bisect(
- F f,
- T min,
- T max,
- Tol tol,
- boost::uintmax_t& max_iter,
- const ``__Policy``&);
-
-These functions locate the root using bisection, function arguments are:
-
-[variablelist
-[[f] [A unary functor which is the function whose root is to be found.]]
-[[min] [The left bracket of the interval known to contain the root.]]
-[[max] [The right bracket of the interval known to contain the root.
- It is a precondition that /min < max/ and /f(min)*f(max) <= 0/,
- 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.]]
-[[tol] [A binary functor that specifies the termination condition: the function
- will return the current brackets enclosing the root when /tol(min,max)/ becomes true.]]
-[[max_iter][The maximum number of invocations of /f(x)/ to make while searching for the root.]]
-]
-
-[optional_policy]
-
-Returns: a pair of values /r/ 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 /m/ is the initial value of /max_iter/ passed to the function.
-
-In other words, it's up to the caller to verify whether termination occurred
-as a result of exceeding /max_iter/ function invocations (easily done by
-checking the value of /max_iter/ when the function returns), rather than
-because the termination condition /tol/ was satisfied.
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- bracket_and_solve_root(
- F f,
- const T& guess,
- const T& factor,
- bool rising,
- Tol tol,
- boost::uintmax_t& max_iter);
-
- template <class F, class T, class Tol, class ``__Policy``>
- std::pair<T, T>
- bracket_and_solve_root(
- F f,
- const T& guess,
- const T& factor,
- bool rising,
- Tol tol,
- boost::uintmax_t& max_iter,
- const ``__Policy``&);
-
-This is a convenience function that calls /toms748_solve/ internally
-to find the root of /f(x)/. It's usable only when /f(x)/ 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
-/x/. The parameters are:
-
-[variablelist
-[[f][A unary functor that is the function whose root is to be solved.
- f(x) must be uniformly increasing or decreasing on /x/.]]
-[[guess][An initial approximation to the root]]
-[[factor][A scaling factor that is used to bracket the root: the value
- /guess/ is multiplied (or divided as appropriate) by /factor/
- until two values are found that bracket the root. A value
- such as 2 is a typical choice for /factor/.]]
-[[rising][Set to /true/ if /f(x)/ is rising on /x/ and /false/ if /f(x)/
- is falling on /x/. This value is used along with the result
- of /f(guess)/ to determine if /guess/ is
- above or below the root.]]
-[[tol] [A binary functor that determines the termination condition for the search
- for the root. /tol/ is passed the current brackets at each step,
- when it returns true then the current brackets are returned as the result.]]
-[[max_iter] [The maximum number of function invocations to perform in the search
- for the root.]]
-]
-
-[optional_policy]
-
-Returns: a pair of values /r/ 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 /m/ is the initial value of /max_iter/ passed to the function.
-
-In other words, it's up to the caller to verify whether termination occurred
-as a result of exceeding /max_iter/ function invocations (easily done by
-checking the value of /max_iter/ when the function returns), rather than
-because the termination condition /tol/ was satisfied.
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- toms748_solve(
- F f,
- const T& a,
- const T& b,
- Tol tol,
- boost::uintmax_t& max_iter);
-
- template <class F, class T, class Tol, class ``__Policy``>
- std::pair<T, T>
- toms748_solve(
- F f,
- const T& a,
- const T& b,
- Tol tol,
- boost::uintmax_t& max_iter,
- const ``__Policy``&);
-
- template <class F, class T, class Tol>
- std::pair<T, T>
- toms748_solve(
- F f,
- const T& a,
- const T& b,
- const T& fa,
- const T& fb,
- Tol tol,
- boost::uintmax_t& max_iter);
-
- template <class F, class T, class Tol, class ``__Policy``>
- std::pair<T, T>
- toms748_solve(
- F f,
- const T& a,
- const T& b,
- const T& fa,
- const T& fb,
- Tol tol,
- boost::uintmax_t& max_iter,
- const ``__Policy``&);
-
-These two functions implement TOMS Algorithm 748: it uses a mixture of
-cubic, quadratic and linear (secant) interpolation to locate the root of
-/f(x)/. The two functions differ only by whether values for /f(a)/ and
-/f(b)/ are already available. The parameters are:
-
-[variablelist
-[[f] [A unary functor that is the function whose root is to be solved.
- f(x) need not be uniformly increasing or decreasing on /x/ and
- may have multiple roots.]]
-[[a] [ The lower bound for the initial bracket of the root.]]
-[[b] [The upper bound for the initial bracket of the root.
- It is a precondition that /a < b/ and that /a/ and /b/
- bracket the root to find so that /f(a)*f(b) < 0/.]]
-[[fa] [Optional: the value of /f(a)/.]]
-[[fb] [Optional: the value of /f(b)/.]]
-[[tol] [A binary functor that determines the termination condition for the search
- for the root. /tol/ is passed the current brackets at each step,
- when it returns true then the current brackets are returned as the result.]]
-[[max_iter] [The maximum number of function invocations to perform in the search
- for the root. On exit /max_iter/ is set to actual number of function
- invocations used.]]
-]
-
-[optional_policy]
-
-Returns: a pair of values /r/ 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 /m/ is the initial value of /max_iter/ passed to the function.
-
-In other words, it's up to the caller to verify whether termination occurred
-as a result of exceeding /max_iter/ function invocations (easily done by
-checking the value of /max_iter/), rather than because the termination
-condition /tol/ was satisfied.
-
- template <class T>
- struct eps_tolerance
- {
- eps_tolerance(int bits);
- bool operator()(const T& a, const T& b)const;
- };
-
-This is the usual termination condition used with these root finding functions.
-Its operator() will return true when the relative distance between /a/ and /b/
-is less than twice the machine epsilon for T, or 2[super 1-bits], whichever is
-the larger. In other words you set /bits/ 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.
-
- struct equal_floor
- {
- equal_floor();
- template <class T> bool operator()(const T& a, const T& b)const;
- };
-
-This termination condition is used when you want to find an integer result
-that is the /floor/ of the true root. It will terminate as soon as both ends
-of the interval have the same /floor/.
-
- struct equal_ceil
- {
- equal_ceil();
- template <class T> bool operator()(const T& a, const T& b)const;
- };
-
-This termination condition is used when you want to find an integer result
-that is the /ceil/ of the true root. It will terminate as soon as both ends
-of the interval have the same /ceil/.
-
- struct equal_nearest_integer
- {
- equal_nearest_integer();
- template <class T> bool operator()(const T& a, const T& b)const;
- };
-
-This termination condition is used when you want to find an integer result
-that is the /closest/ to the true root. It will terminate as soon as both ends
-of the interval round to the same nearest integer.
-
-[h4 Implementation]
-
-The implementation of the bisection algorithm is extremely straightforward
-and not detailed here. TOMS algorithm 748 is described in detail in:
-
-['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.]
-
-The implementation here is a faithful translation of this paper into C++.
-
-[endsect][/section:roots2 Root Finding Without Derivatives]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/series.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/series.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,129 +0,0 @@
-[section:series_evaluation Series Evaluation]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/tools/series.hpp>
-``
-
- namespace boost{ namespace math{ namespace tools{
-
- template <class Functor>
- typename Functor::result_type sum_series(Functor& func, int bits);
-
- template <class Functor>
- typename Functor::result_type sum_series(Functor& func, int bits, boost::uintmax_t& max_terms);
-
- template <class Functor, class U>
- typename Functor::result_type sum_series(Functor& func, int bits, U init_value);
-
- template <class Functor, class U>
- typename Functor::result_type sum_series(Functor& func, int bits, boost::uintmax_t& max_terms, U init_value);
-
- template <class Functor>
- typename Functor::result_type kahan_sum_series(Functor& func, int bits);
-
- template <class Functor>
- typename Functor::result_type kahan_sum_series(Functor& func, int bits, boost::uintmax_t& max_terms);
-
- }}} // namespaces
-
-[h4 Description]
-
-These algorithms are intended for the
-[@http://en.wikipedia.org/wiki/Series_%28mathematics%29 summation of infinite series].
-
-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.
-
-The second argument is the number of binary bits of
-precision required, summation will stop when the next term is too small to
-have any effect on the first /bits/ bits of the result.
-
-The optional third argument /max_terms/ sets an upper limit on the number
-of terms of the series to evaluate. In addition, on exit the function will
-set /max_terms/ 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.
-
-The final optional argument /init_value/ is the initial value of the sum
-to which the terms of the series should be added. This is useful in two situations:
-
-* 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.
-* 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 /1 - S(z)/ 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 /1 - S(z)/.
-
-The two /kahan_sum_series/ variants of these algorithms maintain a carry term
-that corrects for roundoff error during summation.
-They are inspired by the
-[@http://en.wikipedia.org/wiki/Kahan_Summation_Algorithm /Kahan Summation Formula/]
-that appears in
-[@http://docs.sun.com/source/806-3568/ncg_goldberg.html What Every Computer Scientist Should Know About Floating-Point Arithmetic].
-However, it should be pointed out that there are very few series that require
-summation in this way.
-
-[h4 Example]
-
-Let's suppose we want to implement /log(1+x)/ via its infinite series,
-
-[equation log1pseries]
-
-We begin by writing a small function object to return successive terms
-of the series:
-
- template <class T>
- struct log1p_series
- {
- // we must define a result_type typedef:
- typedef T result_type;
-
- log1p_series(T x)
- : k(0), m_mult(-x), m_prod(-1){}
-
- T operator()()
- {
- // This is the function operator invoked by the summation
- // algorithm, the first call to this operator should return
- // the first term of the series, the second call the second
- // term and so on.
- m_prod *= m_mult;
- return m_prod / ++k;
- }
-
- private:
- int k;
- const T m_mult;
- T m_prod;
- };
-
-Implementing log(1+x) is now fairly trivial:
-
- template <class T>
- T log1p(T x)
- {
- // We really should add some error checking on x here!
- assert(std::fabs(x) < 1);
-
- // construct the series functor:
- log1p_series<T> s(x);
- // and add it up, with enough digits for full machine precision
- // plus a couple more for luck.... !
- return tools::sum_series(s, tools::digits(x) + 2);
- }
-
-[endsect][/section Series Evaluation]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/Jamfile.v2 (from r39778, /sandbox/math_toolkit/libs/math/doc/Jamfile.v2)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/Jamfile.v2 (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/Jamfile.v2 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -41,22 +41,19 @@
         # PDF Options:
         # TOC Generation: this is needed for FOP-0.9 and later:
         # <xsl:param>fop1.extensions=1
- <xsl:param>xep.extensions=1
+ <format>pdf:<xsl:param>xep.extensions=1
         # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
- <xsl:param>fop.extensions=0
+ <format>pdf:<xsl:param>fop.extensions=0
         # No indent on body text:
- <xsl:param>body.start.indent=0pt
+ <format>pdf:<xsl:param>body.start.indent=0pt
         # Margin size:
- <xsl:param>page.margin.inner=0.5in
+ <format>pdf:<xsl:param>page.margin.inner=0.5in
         # Margin size:
- <xsl:param>page.margin.outer=0.5in
+ <format>pdf:<xsl:param>page.margin.outer=0.5in
         # Paper type = A4
- <xsl:param>paper.type=A4
+ <format>pdf:<xsl:param>paper.type=A4
         # Yes, we want graphics for admonishments:
         <xsl:param>admon.graphics=1
- # Hyphenation:
- <xsl:param>hyphenate.verbatim=1
- <xsl:param>hyphenate.verbatim.characters=" :."
         # Set this one for PDF generation *only*:
         # default pnd graphics are awful in PDF form,
         # better use SVG's instead:
@@ -70,3 +67,4 @@
 
 
 
+

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/compilers.qbk (from r39778, /sandbox/math_toolkit/libs/math/doc/compilers.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/compilers.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/compilers.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -18,8 +18,8 @@
 [[Borland 5.8.2][Windows][Almost works: some effort has been put into porting to this compiler.
       However, during testing a number of instances were encountered where this compiler
       generated incorrect code: completely omitting a function call seemingly at random.
- For this reason, [*we cannot recoment using this library with this compiler], as the
- correct operation of the code cannot be guarenteed.]]
+ For this reason, [*we cannot recommend using this library with this compiler], as the
+ correct operation of the code cannot be guaranteed.]]
 [[MSVC 8.0][Windows][Warning free at level 4]]
 ]
 

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/concepts.qbk (from r39778, /sandbox/math_toolkit/libs/math/doc/concepts.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/concepts.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/concepts.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -2,13 +2,13 @@
 
 The special functions and tools in this library can be used with
 [@http://shoup.net/ntl/doc/RR.txt NTL::RR (an arbitrary precision number type)],
-via the bindings in [@../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp].
+via the bindings in [@../../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp].
 [@http://shoup.net/ntl/ See also NTL: A Library for doing Number Theory by
 Victor Shoup]
 
 Unfortunately `NTL::RR` doesn't quite satisfy our conceptual requirements,
 so there is a very thin wrapper class `boost::math::ntl::RR` defined in
-[@../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp] that you
+[@../../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp] that you
 should use in place of `NTL::RR`. 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
@@ -116,7 +116,7 @@
 # The function `epsilon` 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/tools/ntl.hpp boost/math/tools/ntl.hpp]
+[@../../../../../boost/math/tools/ntl.hpp boost/math/tools/ntl.hpp]
 for an example where the precision does vary at runtime).
 # The functions `digits`, `max_value` and `min_value`, all get synthesised
 automatically from `std::numeric_limits`. However, if `numeric_limits`
@@ -124,7 +124,7 @@
 when code tries to use these functions, /unless/ you explicitly specialise them.
 For example if the precision of RealType varies at runtime, then
 `numeric_limits` support may not be appropriate, see
-[@../../../../boost/math/tools/ntl.hpp boost/math/tools/ntl.hpp] for examples.
+[@../../../../../boost/math/tools/ntl.hpp boost/math/tools/ntl.hpp] for examples.
 
 [warning
 If `std::numeric_limits<>` is *not specialized*
@@ -183,14 +183,14 @@
 
 In addition, for efficient and accurate results, a __lanczos is highly desirable.
 You may be able to adapt an existing approximation from
-[@../../../../boost/math/special_functions/lanczos.hpp
+[@../../../../../boost/math/special_functions/lanczos.hpp
 boost/math/special_functions/lanczos.hpp] or
 [@../tools/ntl_rr_lanczos.hpp libs/math/tools/ntl_rr_lanczos.hpp]:
 you will need change
 static_cast's to lexical_cast's, and the constants to /strings/
 (in order to ensure the coefficients aren't truncated to long double)
 and then specialise `lanczos_traits` for type T. Otherwise you may have to hack
-[@../../tools/lanczos_generator.cpp
+[@../../../tools/lanczos_generator.cpp
 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
@@ -280,7 +280,7 @@
 been brought into the current scope with a using declaration.
 
 There is a test program
-[@../../teststd_real_concept_check.cpp libs/math/test/std_real_concept_check.cpp]
+[@../../../teststd_real_concept_check.cpp libs/math/test/std_real_concept_check.cpp]
 that instantiates every template in this library with type
 `std_real_concept` to verify it's usage of standard library functions.
 
@@ -331,11 +331,11 @@
 [link math_toolkit.using_udt.dist_concept Distribution concept].
 
 The class template `DistributionConcept` is a
-[@../../../../libs/concept_check/index.html concept checking class]
+[@../../../../../libs/concept_check/index.html concept checking class]
 for distribution types.
 
 The test program
-[@../../test/distribution_concept_check.cpp distribution_concept_check.cpp]
+[@../../../test/distribution_concept_check.cpp distribution_concept_check.cpp]
 is responsible for using `DistributionConcept` to verify that all the
 distributions in this library conform to the
 [link math_toolkit.using_udt.dist_concept Distribution concept].

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/binomial_example.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/binomial_example.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/binomial_example.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/binomial_example.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -4,10 +4,10 @@
 
 [section:binomial_coinflip_example Binomial Coin-Flipping Example]
 
-[import ../../example/binomial_coinflip_example.cpp]
+[import ../../../example/binomial_coinflip_example.cpp]
 [binomial_coinflip_example1]
 
-See [@../../example/binomial_coinflip_example.cpp binomial_coinflip_example.cpp]
+See [@../../../example/binomial_coinflip_example.cpp binomial_coinflip_example.cpp]
 for full source code, the program output looks like this:
 
 [binomial_coinflip_example_output]
@@ -16,12 +16,12 @@
 
 [section:binomial_quiz_example Binomial Quiz Example]
 
-[import ../../example/binomial_quiz_example.cpp]
+[import ../../../example/binomial_quiz_example.cpp]
 [binomial_quiz_example1]
 [binomial_quiz_example2]
 [discrete_quantile_real]
 
-See [@../../example/binomial_quiz_example.cpp binomial_quiz_example.cpp]
+See [@../../../example/binomial_quiz_example.cpp binomial_quiz_example.cpp]
 for full source code and output.
 
 [endsect] [/section:binomial_coinflip_quiz Binomial Coin-Flipping example]
@@ -39,7 +39,7 @@
 `binomial_distribution<>::find_upper_bound_on_p` allow you to calculate
 the confidence intervals for your estimate of the occurrence frequency.
 
-The sample program [@../../example/binomial_confidence_limits.cpp
+The sample program [@../../../example/binomial_confidence_limits.cpp
 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:
@@ -222,7 +222,7 @@
 acceptable risk level /alpha/.
 
 The example program
-[@../../example/binomial_sample_sizes.cpp binomial_sample_sizes.cpp]
+[@../../../example/binomial_sample_sizes.cpp 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:
 

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/chi_squared_examples.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/chi_squared_examples.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/chi_squared_examples.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/chi_squared_examples.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -9,7 +9,7 @@
 confidence intervals for the standard deviation.
 
 The full example code & sample output is in
-[@../../example/chi_square_std_dev_test.cpp chi_square_std_deviation_test.cpp].
+[@../../../example/chi_square_std_dev_test.cpp chi_square_std_deviation_test.cpp].
 
 We'll begin by defining the procedure that will calculate and print out the
 confidence intervals:
@@ -178,7 +178,7 @@
 process to an established one.
 
 The code for this example is contained in
-[@../../chi_square_std_dev_test.cpp chi_square_std_dev_test.cpp], and
+[@../../../chi_square_std_dev_test.cpp chi_square_std_dev_test.cpp], and
 we'll begin by defining the procedure that will print out the test
 statistics:
 
@@ -372,7 +372,7 @@
 note that the method used works on variance, and not standard deviation
 as is usual for the Chi Squared Test.
 
-The code for this example is located in [@../../chi_square_std_dev_test.cpp
+The code for this example is located in [@../../../chi_square_std_dev_test.cpp
 chi_square_std_dev_test.cpp].
 
 We begin by defining a procedure to print out the sample sizes required

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/distribution_construction.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/distribution_construction.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/distribution_construction.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/distribution_construction.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -1,8 +1,8 @@
 [section:distribution_construction_eg Distribution Construction Example]
 
-See [@../../example/distribution_construction.cpp distribution_construction.cpp] for full source code.
+See [@../../../example/distribution_construction.cpp distribution_construction.cpp] for full source code.
 
-[import ../../example/distribution_construction.cpp]
+[import ../../../example/distribution_construction.cpp]
 [distribution_construction1]
 [distribution_construction2]
 

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/error_handling_example.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/error_handling_example.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/error_handling_example.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/error_handling_example.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -12,7 +12,7 @@
 pole errors or internal errors), or infinity (from overflow),
 you need to change the policy.
 
-[import ../../example/error_handling_example.cpp]
+[import ../../../example/error_handling_example.cpp]
 
 [error_handling_example]
 

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/find_location_and_scale.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/find_location_and_scale.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/find_location_and_scale.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/find_location_and_scale.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -1,28 +1,28 @@
 [section:find_eg Find Location and Scale Examples]
 
 [section:find_location_eg Find Location (Mean) Example]
-[import ../../example/find_location_example.cpp]
+[import ../../../example/find_location_example.cpp]
 [find_location1]
 [find_location2]
-See [@../../example/find_location_example.cpp find_location_example.cpp]
+See [@../../../example/find_location_example.cpp find_location_example.cpp]
 for full source code: the program output looks like this:
 [find_location_example_output]
 [endsect] [/section:find_location_eg Find Location (Mean) Example]
 
 [section:find_scale_eg Find Scale (Standard Deviation) Example]
-[import ../../example/find_scale_example.cpp]
+[import ../../../example/find_scale_example.cpp]
 [find_scale1]
 [find_scale2]
-See [@../../example/find_scale_example.cpp find_scale_example.cpp]
+See [@../../../example/find_scale_example.cpp find_scale_example.cpp]
 for full source code: the program output looks like this:
 [find_scale_example_output]
 [endsect] [/section:find_scale_eg Scale (Standard Deviation) Example]
 [section:find_mean_and_sd_eg Find mean and standard deviation example]
 
-[import ../../example/find_mean_and_sd_normal.cpp]
+[import ../../../example/find_mean_and_sd_normal.cpp]
 [normal_std]
 [normal_find_location_and_scale_eg]
-See [@../../example/find_mean_and_sd_normal.cpp find_mean_and_sd_normal.cpp]
+See [@../../../example/find_mean_and_sd_normal.cpp find_mean_and_sd_normal.cpp]
 for full source code & appended program output.
 [endsect] [/find_mean_and_sd_eg Find mean and standard deviation example]
 

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/nag_library.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/nag_library.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/nag_library.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/nag_library.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -47,7 +47,7 @@
 
 `pdf(dist, k)` is equivalent to NAG library `peqk`, point probability of == k
 
-See [@../../example/binomial_example_nag.cpp binomial_example_nag.cpp] for details.
+See [@../../../example/binomial_example_nag.cpp binomial_example_nag.cpp] for details.
 
 [endsect] [/section:nag_library Comparison with C, R, FORTRAN-style Free Functions]
 

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/negative_binomial_example.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/negative_binomial_example.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/negative_binomial_example.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/negative_binomial_example.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -20,10 +20,10 @@
 `negative_binomial_distribution<>::find_upper_bound_on_p`
 allow you to calculate the confidence intervals for your estimate of the success fraction.
 
-The sample program [@../../example/neg_binom_confidence_limits.cpp
+The sample program [@../../../example/neg_binom_confidence_limits.cpp
 neg_binom_confidence_limits.cpp] illustrates their use.
 
-[import ../../example/neg_binom_confidence_limits.cpp]
+[import ../../../example/neg_binom_confidence_limits.cpp]
 
 [neg_binomial_confidence_limits]
 Let's see some sample output for a 1 in 10
@@ -95,10 +95,10 @@
 of observing the desired number of failures.
 
 The example program
-[@../../example/neg_binomial_sample_sizes.cpp neg_binomial_sample_sizes.cpp]
+[@../../../example/neg_binomial_sample_sizes.cpp neg_binomial_sample_sizes.cpp]
 demonstrates its usage.
 
-[import ../../example/neg_binomial_sample_sizes.cpp]
+[import ../../../example/neg_binomial_sample_sizes.cpp]
 [neg_binomial_sample_sizes]
 
 [note Since we're calculating the /minimum/ number of trials required,
@@ -165,10 +165,10 @@
 [section:negative_binomial_example1 Negative Binomial Sales Quota Example.]
 
 This example program
-[@../../example/negative_binomial_example1.cpp negative_binomial_example1.cpp (full source code)]
+[@../../../example/negative_binomial_example1.cpp negative_binomial_example1.cpp (full source code)]
 demonstrates a simple use to find the probability of meeting a sales quota.
 
-[import ../../example/negative_binomial_example1.cpp]
+[import ../../../example/negative_binomial_example1.cpp]
 [negative_binomial_eg1_1]
 [negative_binomial_eg1_2]
 
@@ -176,7 +176,7 @@
 
 [section:negative_binomial_example2 Negative Binomial Table Printing Example.]
 Example program showing output of a table of values of cdf and pdf for various k failures.
-[import ../../example/negative_binomial_example2.cpp]
+[import ../../../example/negative_binomial_example2.cpp]
 [neg_binomial_example2]
 [neg_binomial_example2_1]
 [endsect] [/section:negative_binomial_example1 Negative Binomial example 2.]

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/normal_example.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/normal_example.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/normal_example.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/normal_example.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -4,10 +4,10 @@
 
 [section:normal_misc Some Miscellaneous Examples of the Normal (Gaussian) Distribution]
 
-The sample program [@../../example/normal_misc_examples.cpp
+The sample program [@../../../example/normal_misc_examples.cpp
 normal_misc_examples.cpp] illustrates their use.
 
-[import ../../example/normal_misc_examples.cpp]
+[import ../../../example/normal_misc_examples.cpp]
 
 [h4 Traditional Tables]
 [normal_basic1]

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/students_t_examples.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/students_t_examples.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/students_t_examples.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/students_t_examples.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -47,7 +47,7 @@
 * The width increases as the ['significance level decreases] (0.5 towards 0.00000...01 - stronger).
 
 The following example code is taken from the example program
-[@../../example/students_t_single_sample.cpp students_t_single_sample.cpp].
+[@../../../example/students_t_single_sample.cpp students_t_single_sample.cpp].
 
 We'll begin by defining a procedure to calculate intervals for
 various confidence levels; the procedure will print these out
@@ -202,7 +202,7 @@
 often this is simply a "traditional" method of measurement.
 
 The following example code is taken from the example program
-[@../../example/students_t_single_sample.cpp students_t_single_sample.cpp].
+[@../../../example/students_t_single_sample.cpp students_t_single_sample.cpp].
 
 We'll begin by defining a procedure to determine which of the
 possible hypothesis are rejected or not-rejected
@@ -407,7 +407,7 @@
 can provide this information.
 
 This section is based on the example code in
-[@../../example/students_t_single_sample.cpp students_t_single_sample.cpp]
+[@../../../example/students_t_single_sample.cpp 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:
 
@@ -536,7 +536,7 @@
 miles per gallon of US cars with miles per gallon of Japanese cars.
 
 The sample code is in
-[@../../example/students_t_two_samples.cpp students_t_two_samples.cpp].
+[@../../../example/students_t_two_samples.cpp students_t_two_samples.cpp].
 
 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.

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/triangular.qbk (from r39787, /sandbox/math_toolkit/libs/math/doc/distributions/triangular.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/distributions/triangular.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/distributions/triangular.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -134,12 +134,12 @@
 
 x = b - sqrt((b-a)(b-c)q) ; for p > p0
 
-(See [@../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details.)]]
-[[quantile from the complement][As quantile (See [@../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details.)]]
+(See [@../../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details.)]]
+[[quantile from the complement][As quantile (See [@../../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details.)]]
 [[mean][(a + b + 3) \/ 3 ]]
 [[variance][(a[super 2]+b[super 2]+c[super 2] - ab - ac - bc)\/18]]
 [[mode][c]]
-[[skewness][(See [@../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details). ]]
+[[skewness][(See [@../../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details). ]]
 [[kurtosis][12\/5]]
 [[kurtosis excess][-3\/5]]
 ]

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/error_handling.qbk (from r39778, /sandbox/math_toolkit/libs/math/doc/error_handling.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/error_handling.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/error_handling.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -1,6 +1,6 @@
 [section:error_handling Error Handling]
 
-[def __format [@../../libs/format/index.html Boost.Format]]
+[def __format [@../../../libs/format/index.html Boost.Format]]
 
 [heading Quick Reference]
 

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/implementation.qbk (from r39778, /sandbox/math_toolkit/libs/math/doc/implementation.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/implementation.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/implementation.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -134,7 +134,7 @@
 for a detailed explanation of the mechanism, and
 [link math_toolkit.dist.stat_tut.weg.error_eg error_handling example]
 and
-[@/../../example/error_handling_example.cpp error_handling_example.cpp]
+[@../../../example/error_handling_example.cpp error_handling_example.cpp]
 
 [caution If you enable throw but do NOT have try & catch block,
 then the program will terminate with an uncaught exception and probably abort.

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/math.qbk (from r39778, /sandbox/math_toolkit/libs/math/doc/math.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/math.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/math.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -228,7 +228,7 @@
 [template floorlr[x][lfloor][x][rfloor]]
 [template ceil[x] '''&#x2308;'''[x]'''&#x2309;''']
 
-[template header_file[file] [@../../../../[file] [file]]]
+[template header_file[file] [@../../../../../[file] [file]]]
 
 [template optional_policy[]
 The final __Policy argument is optional and can be used to

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/policy.qbk (from r39778, /sandbox/math_toolkit/libs/math/doc/policy.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/policy.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/policy.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -187,14 +187,14 @@
 `::errno` rather than throw an exception, we can achieve this at the call site
 using:
 
-[import ../example/policy_ref_snip1.cpp]
+[import ../../example/policy_ref_snip1.cpp]
 
 [policy_ref_snip1]
    
 Suppose we want a statistical distribution to return infinities,
 rather than throw exceptions, then we can use:
 
-[import ../example/policy_ref_snip2.cpp]
+[import ../../example/policy_ref_snip2.cpp]
 
 [policy_ref_snip2]
 
@@ -222,13 +222,13 @@
 Suppose we want `tgamma` to be evaluated without internal promotion to
 `long double`, then we could use:
 
-[import ../example/policy_ref_snip3.cpp]
+[import ../../example/policy_ref_snip3.cpp]
 [policy_ref_snip3]
    
 Alternatively, suppose we want a distribution to perform calculations
 without promoting `float` to `double`, then we could use:
 
-[import ../example/policy_ref_snip4.cpp]
+[import ../../example/policy_ref_snip4.cpp]
 [policy_ref_snip4]
    
 [endsect] [/section:internal_promotion Internal Promotion Policies]
@@ -307,7 +307,7 @@
 Ignores the discreteness of the distribution, and returns a real-valued
 result. For example:
 
-[import ../example/policy_ref_snip5.cpp]
+[import ../../example/policy_ref_snip5.cpp]
 [policy_ref_snip5]
    
 Results in `x = 27.3898` and `y = 68.1584`.
@@ -324,7 +324,7 @@
 one and two sided intervals are guaranteed to have ['at least]
 the requested coverage. For example:
 
-[import ../example/policy_ref_snip6.cpp]
+[import ../../example/policy_ref_snip6.cpp]
 [policy_ref_snip6]
    
 Results in `x = 27` (rounded down from 27.3898) and `y = 69` (rounded up from 68.1584).
@@ -347,7 +347,7 @@
 
 For example:
 
-[import ../example/policy_ref_snip7.cpp]
+[import ../../example/policy_ref_snip7.cpp]
 
 [policy_ref_snip7]
    
@@ -381,7 +381,7 @@
 
 For example:
 
-[import ../example/policy_ref_snip8.cpp]
+[import ../../example/policy_ref_snip8.cpp]
 
 [policy_ref_snip8]
 
@@ -417,19 +417,19 @@
 
 For example we could calculate `tgamma` to approximately 5 decimal digits using:
 
-[import ../example/policy_ref_snip9.cpp]
+[import ../../example/policy_ref_snip9.cpp]
 
 [policy_ref_snip9]
    
 Or again using ['make_policy]:
 
-[import ../example/policy_ref_snip10.cpp]
+[import ../../example/policy_ref_snip10.cpp]
 
 [policy_ref_snip10]
 
 And for a quantile of a distribution to approximately 25-bit precision:
 
-[import ../example/policy_ref_snip11.cpp]
+[import ../../example/policy_ref_snip11.cpp]
 
 [policy_ref_snip11]
 
@@ -474,7 +474,7 @@
 If you want to alter the defaults for any or all of
 the policies for *all* functions and distributions, installation-wide,
 then you can do so by defining various macros in
-[@../../../../boost/math/tools/user.hpp boost/math/tools/user.hpp].
+[@../../../../../boost/math/tools/user.hpp boost/math/tools/user.hpp].
 
 [h5 BOOST_MATH_DOMAIN_ERROR_POLICY]
 
@@ -606,7 +606,7 @@
 You can use either of these macros after including any special function
 or distribution header. For example:
 
-[import ../example/policy_ref_snip12.cpp]
+[import ../../example/policy_ref_snip12.cpp]
 
 [policy_ref_snip12]
 
@@ -628,7 +628,7 @@
 We can do the same thing with the distributions, but this time we need to
 specify the floating-point type to use:
 
-[import ../example/policy_ref_snip13.cpp]
+[import ../../example/policy_ref_snip13.cpp]
 
 [policy_ref_snip13]
    

Copied: sandbox/math_toolkit/libs/math/doc/sf_and_dist/policy_tutorial.qbk (from r39778, /sandbox/math_toolkit/libs/math/doc/policy_tutorial.qbk)
==============================================================================
--- /sandbox/math_toolkit/libs/math/doc/policy_tutorial.qbk (original)
+++ sandbox/math_toolkit/libs/math/doc/sf_and_dist/policy_tutorial.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
@@ -148,7 +148,7 @@
 
 That means there are only two safe ways to use these macros:
 
-* Edit them in [@../../../../boost/math/tools/user.hpp boost/math/tools/user.hpp],
+* Edit them in [@../../../../../boost/math/tools/user.hpp 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).
@@ -194,7 +194,7 @@
 promotion to double, and with the result rounded to the /nearest/
 integer, then here's how it can be done:
 
-[import ../example/policy_eg_3.cpp]
+[import ../../example/policy_eg_3.cpp]
 
 [policy_eg_3]
 
@@ -235,7 +235,7 @@
 fashion and set `::errno` when an error occurs, and never
 throw an exception:
 
-[import ../example/policy_eg_1.cpp]
+[import ../../example/policy_eg_1.cpp]
 
 [policy_eg_1]
 
@@ -253,7 +253,7 @@
 verbose, so is probably only preferred when a policy is going
 to be used once only:
 
-[import ../example/policy_eg_2.cpp]
+[import ../../example/policy_eg_2.cpp]
 
 [policy_eg_2]
 
@@ -274,7 +274,7 @@
 purpose, or an unnamed namespace if you just want the functions
 visible in global scope for the current file only.
 
-[import ../example/policy_eg_4.cpp]
+[import ../../example/policy_eg_4.cpp]
 
 [policy_eg_4]
 
@@ -282,7 +282,7 @@
 namespace, we can ensure that these declarations don't conflict with any
 alternate policies present in other translation units:
 
-[import ../example/policy_eg_5.cpp]
+[import ../../example/policy_eg_5.cpp]
 
 [policy_eg_5]
 
@@ -299,7 +299,7 @@
 The name of each typedef is the same as the name of the distribution
 class template, but without the "_distribution" suffix.
 
-[import ../example/policy_eg_6.cpp]
+[import ../../example/policy_eg_6.cpp]
 
 [policy_eg_6]
 
@@ -314,7 +314,7 @@
 namespace, we can ensure that these declarations don't conflict with any
 alternate policies present in other translation units:
 
-[import ../example/policy_eg_7.cpp]
+[import ../../example/policy_eg_7.cpp]
 
 [policy_eg_7]
 
@@ -322,11 +322,11 @@
 
 [section:user_defined_error_policies Calling User Defined Error Handlers]
 
-[import ../example/policy_eg_8.cpp]
+[import ../../example/policy_eg_8.cpp]
 
 [policy_eg_8]
 
-[import ../example/policy_eg_9.cpp]
+[import ../../example/policy_eg_9.cpp]
 
 [policy_eg_9]
 
@@ -485,7 +485,7 @@
 
 ]
 
-[import ../example/policy_eg_10.cpp]
+[import ../../example/policy_eg_10.cpp]
 
 [policy_eg_10]
 

Deleted: sandbox/math_toolkit/libs/math/doc/sinc.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/sinc.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,103 +0,0 @@
-[/ math.qbk
- Copyright 2006 Hubert Holin and John Maddock.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-[section:sinc Sinus Cardinal and Hyperbolic Sinus Cardinal Functions]
-
-[section:sinc_overview Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview]
-
-The [@http://mathworld.wolfram.com/SincFunction.html Sinus Cardinal family of functions]
-(indexed by the family of indices [^a > 0])
-is defined by
-[equation special_functions_blurb20];
-it sees heavy use in signal processing tasks.
-
-By analogy, the
-[@http://mathworld.wolfram.com/SinhcFunction.htm Hyperbolic Sinus Cardinal]
-family of functions
-(also indexed by the family of indices [^a > 0]) is defined by
-[equation special_functions_blurb22].
-
-These two families of functions are composed of entire functions.
-
-These functions (__sinc_pi and __sinhc_pi) are needed by
-[@http://www.boost.org/libs/math/quaternion/quaternion.html our implementation]
-of [@http://mathworld.wolfram.com/Quaternion.html quaternions]
-and [@http://mathworld.wolfram.com/Octonion.html octonions].
-
-[: ['[*Sinus Cardinal of index pi (purple) and Hyperbolic Sinus Cardinal of index pi (red) on R]]]
-[: [$../graphs/sinc_pi_and_sinhc_pi_on_r.png]]
-
-[endsect]
-
-[section sinc_pi]
-
-``
-#include <boost/math/special_functions/sinc.hpp>
-``
-
- template<class T>
- ``__sf_result`` sinc_pi(const T x);
-
- template<class T, class ``__Policy``>
- ``__sf_result`` sinc_pi(const T x, const ``__Policy``&);
-
- template<class T, template<typename> class U>
- U<T> sinc_pi(const U<T> x);
-
- template<class T, template<typename> class U, class ``__Policy``>
- U<T> sinc_pi(const U<T> x, const ``__Policy``&);
-
-Computes
-[link math_toolkit.special.sinc.sinc_overview
-the Sinus Cardinal] of x:
-
- sinc_pi(x) = sin(x) / x
-
-The second form is for complex numbers,
-quaternions, octonions etc. Taylor series are used at the origin
-to ensure accuracy.
-
-[optional_policy]
-
-[endsect]
-
-[section sinhc_pi]
-
-``
-#include <boost/math/special_functions/sinhc.hpp>
-``
-
- template<class T>
- ``__sf_result`` sinhc_pi(const T x);
-
- template<class T, class ``__Policy``>
- ``__sf_result`` sinhc_pi(const T x, const ``__Policy``&);
-
- template<typename T, template<typename> class U>
- U<T> sinhc_pi(const U<T> x);
-
- template<class T, template<typename> class U, class ``__Policy``>
- U<T> sinhc_pi(const U<T> x, const ``__Policy``&);
-
-Computes http://mathworld.wolfram.com/SinhcFunction.html
-[link math_toolkit.special.sinc.sinc_overview
-the Hyperbolic Sinus Cardinal] of x:
-
- sinhc_pi(x) = sinh(x) / x
-
-The second form is for
-complex numbers, quaternions, octonions etc. Taylor series are used at the origin
-to ensure accuracy.
-
-The return type of the first form is computed using the __arg_pomotion_rules
-when T is an integer type.
-
-[optional_policy]
-
-[endsect]
-
-[endsect]

Deleted: sandbox/math_toolkit/libs/math/doc/spherical_harmonic.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/spherical_harmonic.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,150 +0,0 @@
-[section:sph_harm Spherical Harmonics]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/spheric_harmonic.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T1, class T2>
- std::complex<``__sf_result``> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- std::complex<``__sf_result``> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&);
-
- template <class T1, class T2>
- ``__sf_result`` spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types.
-
-[optional_policy]
-
- template <class T1, class T2>
- std::complex<``__sf_result``> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- std::complex<``__sf_result``> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&);
-
-Returns the value of the Spherical Harmonic Y[sub n][super m](theta, phi):
-
-[equation spherical_0]
-
-The spherical harmonics Y[sub n][super m](theta, phi) are the angular
-portion of the solution to Laplace's equation in spherical coordinates
-where azimuthal symmetry is not present.
-
-[caution Care must be taken in correctly identifying the arguments to this
-function: [theta][space] is taken as the polar (colatitudinal) coordinate
-with [theta][space] in \[0, [pi]\], and [phi][space] as the azimuthal (longitudinal)
-coordinate with [phi][space] in \[0,2[pi]). This is the convention used in Physics,
-and matches the definition used by
-[@http://documents.wolfram.com/mathematica/functions/SphericalHarmonicY
-Mathematica in the function SpericalHarmonicY],
-but is opposite to the usual mathematical conventions.
-
-Some other sources include an additional Condon-Shortley phase term of
-(-1)[super m] in the definition of this function: note however that our
-definition of the associated Legendre polynomial already includes this term.
-
-This implementation returns zero for m > n
-
-For [theta][space] outside \[0, [pi]\] and [phi][space] outside \[0, 2[pi]\] this
-implementation follows the convention used by Mathematica:
-the function is periodic with period [pi][space] in [theta][space] and 2[pi][space] in
-[phi]. Please note that this is not the behaviour one would get
-from a casual application of the function's definition. Cautious users
-should keep [theta][space] and [phi][space] to the range \[0, [pi]\] and
-\[0, 2[pi]\] respectively.
-
-See: [@http://mathworld.wolfram.com/SphericalHarmonic.html
-Weisstein, Eric W. "Spherical Harmonic."
-From MathWorld--A Wolfram Web Resource]. ]
-
- template <class T1, class T2>
- ``__sf_result`` spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&);
-
-Returns the real part of Y[sub n][super m](theta, phi):
-
-[equation spherical_1]
-
- template <class T1, class T2>
- ``__sf_result`` spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
-
- template <class T1, class T2, class ``__Policy``>
- ``__sf_result`` spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&);
-
-Returns the imaginary part of Y[sub n][super m](theta, phi):
-
-[equation spherical_2]
-
-[h4 Accuracy]
-
-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 __zero_error. 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.
-
-All values are in units of epsilon.
-
-[table Peak Errors In the Sperical Harmonic Functions
-[[Significand Size] [Platform and Compiler] [Errors in range
-
-0 < l < 20] ]
-[[53] [Win32, Visual C++ 8] [Peak=2x10[super 4] Mean=700] ]
-[[64] [SUSE Linux IA32, g++ 4.1] [Peak=2900 Mean=100]]
-[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=2900 Mean=100] ]
-[[113] [HPUX IA64, aCC A.06.06] [Peak=6700 Mean=230]]
-]
-
-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.
-
-[h4 Testing]
-
-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
-[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision.
-
-[h4 Implementation]
-
-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
-['1-x[super 2]] term used by the associated Legendre functions is calculated
-without roundoff error using ['x = cos(theta)], and
-['1-x[super 2] = sin[super 2](theta)]). The limiting factor in the error
-rates for these functions is the need to calculate values near the roots
-of the associated Legendre functions.
-
-[endsect][/section:beta_function The Beta Function]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/structure.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/structure.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,127 +0,0 @@
-[section:navigation Navigation]
-
-Used in combination with the configured browser key, the
-following keys act as handy shortcuts for common navigation tasks.
-
-[h5 Shortcuts]
-[:
-[^[*p]] - Previous page
-
-[^[*n]] - Next page
-
-[^[*h]] - home
-
-[^[*u]] - Up
-]
-
-The following table shows how to access these from common browsers:
-
-[table
-[[Browser][Access Method]]
-[[Internet Explorer]
- [Alt+Key highlights the link only, so for example to move to the next topic
- you would need "Alt+n" followed by "Enter".]]
-[[Firefox 2.0 and later][Alt+Shift+Key follows the link, so for example
- "Alt+Shift+n" will take you to the next topic.]]
-[[Opera][Press Shift+Esc followed by the access key.]]
-[[Konqueror][Press and release the Ctrl key, followed by the access key]]
-]
-
-Some browsers also make these links available in their site-navigation
-toolbars: in Opera for example you can use Ctrl plus the left and right
-arrow keys to move between "next" and "previous" topics.
-
-[endsect]
-
-[section:directories Directory and File Structure]
-
-[h4 boost\/math]
-
-[variablelist
-[[\/concepts\/]
- [Prototype defining the *essential* features of a RealType
- class (see real_concept.hpp). Most applications will use `double`
- as the RealType (and short `typedef` names of distributions are
- reserved for this type where possible), a few will use `float` or
- `long double`, but it is also possible to use higher precision types
- like __NTL_RR that conform to the requirements specified by real_concept.]]
-
-[[\/constants\/]
- [Templated definition of some highly accurate math
- constants (in constants.hpp).]]
-
-[[\/distributions\/]
- [Distributions used in mathematics and, especially, statistics:
- Gaussian, Students-t, Fisher, Binomial etc]]
-
-[[\/policies\/]
- [Policy framework, for handling user requested behaviour modifications.]]
-
-[[\/special_functions\/]
- [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).]]
-
-[[\/tools\/]
- [Tools used by functions, like evaluating polynomials, continued fractions,
- root finding, precision and limits, and by tests. Some will
- find application outside this package.]]
-]
-
-[h4 boost\/libs]
-
-[variablelist
-[[\/doc\/]
- [Documentation source files in Quickbook format processed into
- html and pdf formats.]]
-
-[[\/examples\/]
- [Examples and demos of using math functions and distributions.]]
-
-[[\/performance\/]
- [Performance testing and tuning program.]]
-
-[[\/test\/]
- [Test files, in various .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).]]
-
-[[\/tools\/]
- [Programs used to generate test data. Also changes to the
- [@http://shoup.net/ntl/ NTL] released package to provide a few additional
- (and vital) extra features.]]
-]
-
-[endsect]
-
-[section:namespaces Namespaces]
-
-All math functions and distributions are in `namespace boost::math`
-
-So, for example, the Students-t distribution template in `namespace boost::math` is
-
- template <class RealType> class students_t_distribution
-
-and can be instantiated with the help of the reserved name `students_t`(for `RealType double`)
-
- typedef students_t_distribution<double> students_t;
-
- student_t mydist(10);
-
-Functions not intended for use by applications are in `boost::math::detail`.
-
-Functions that may have more general use, like `digits`
-(significand), `max_value`, `min_value` and `epsilon` are in
-`boost::math::tools`.
-
-__Policy and configuration information is in namespace `boost::math::policies`.
-
-[endsect]
-
-[/ structure.qbk
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/test_data.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/test_data.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,438 +0,0 @@
-[section:test_data Graphing, Profiling, and Generating Test Data for Special Functions]
-
-The class `test_data` and associated helper functions are designed so that in just
-a few lines of code you should be able to:
-
-* Profile a continued fraction, or infinite series for convergence and accuracy.
-* Generate csv data from a special function that can be imported into your favorite
-graphing program (or spreadsheet) for further analysis.
-* Generate high precision test data.
-
-[h4 Synopsis]
-
- namespace boost{ namespace math{ namespace tools{
-
- enum parameter_type
- {
- random_in_range = 0,
- periodic_in_range = 1,
- power_series = 2,
- dummy_param = 0x80,
- };
-
- template <class T>
- struct parameter_info;
-
- template <class T>
- parameter_info<T> make_random_param(T start_range, T end_range, int n_points);
-
- template <class T>
- parameter_info<T> make_periodic_param(T start_range, T end_range, int n_points);
-
- template <class T>
- parameter_info<T> make_power_param(T basis, int start_exponent, int end_exponent);
-
- template <class T>
- bool get_user_parameter_info(parameter_info<T>& info, const char* param_name);
-
- template <class T>
- class test_data
- {
- public:
- typedef std::vector<T> row_type;
- typedef row_type value_type;
- private:
- typedef std::set<row_type> container_type;
- public:
- typedef typename container_type::reference reference;
- typedef typename container_type::const_reference const_reference;
- typedef typename container_type::iterator iterator;
- typedef typename container_type::const_iterator const_iterator;
- typedef typename container_type::difference_type difference_type;
- typedef typename container_type::size_type size_type;
-
- // creation:
- test_data(){}
- template <class F>
- test_data(F func, const parameter_info<T>& arg1);
-
- // insertion:
- template <class F>
- test_data& insert(F func, const parameter_info<T>& arg1);
-
- template <class F>
- test_data& insert(F func, const parameter_info<T>& arg1,
- const parameter_info<T>& arg2);
-
- template <class F>
- test_data& insert(F func, const parameter_info<T>& arg1,
- const parameter_info<T>& arg2,
- const parameter_info<T>& arg3);
-
- void clear();
-
- // access:
- iterator begin();
- iterator end();
- const_iterator begin()const;
- const_iterator end()const;
- bool operator==(const test_data& d)const;
- bool operator!=(const test_data& d)const;
- void swap(test_data& other);
- size_type size()const;
- size_type max_size()const;
- bool empty()const;
-
- bool operator < (const test_data& dat)const;
- bool operator <= (const test_data& dat)const;
- bool operator > (const test_data& dat)const;
- bool operator >= (const test_data& dat)const;
- };
-
- template <class charT, class traits, class T>
- std::basic_ostream<charT, traits>& write_csv(
- std::basic_ostream<charT, traits>& os,
- const test_data<T>& data);
-
- template <class charT, class traits, class T>
- std::basic_ostream<charT, traits>& write_csv(
- std::basic_ostream<charT, traits>& os,
- const test_data<T>& data,
- const charT* separator);
-
- template <class T>
- std::ostream& write_code(std::ostream& os,
- const test_data<T>& data,
- const char* name);
-
- }}} // namespaces
-
-[h4 Description]
-
-This tool is best illustrated with the following series of examples.
-
-The functionality of test_data is split into the following parts:
-
-* A functor that implements the function for which data is being generated:
-this is the bit you have to write.
-* 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 /this/ etc.
-* 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.
-* 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).
-
-[h5 Example 1: Output Data for Graph Plotting]
-
-For example, lets say we want to graph the lgamma function between -3 and 100,
-one could do this like so:
-
- #include <boost/math/tools/test_data.hpp>
- #include <boost/math/special_functions/gamma.hpp>
-
- int main()
- {
- using namespace boost::math::tools;
-
- // create an object to hold the data:
- test_data<double> data;
-
- // insert 500 points at uniform intervals between just after -3 and 100:
- double (*pf)(double) = boost::math::lgamma;
- data.insert(pf, make_periodic_param(-3.0 + 0.00001, 100.0, 500));
-
- // print out in csv format:
- write_csv(std::cout, data, ", ");
- return 0;
- }
-
-Which, when plotted, results in:
-
-[$../graphs/lgamma.png]
-
-[h5 Example 2: Creating Test Data]
-
-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.
-
-In this example we'll generate test data for the beta function using
-[@http://shoup.net/ntl/doc/RR.txt 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.
-
-To start with then, here's the function object that creates the test data:
-
- #include <boost/math/tools/ntl.hpp>
- #include <boost/math/special_functions/gamma.hpp>
- #include <boost/math/tools/test_data.hpp>
- #include <fstream>
-
- #include <boost/math/tools/test_data.hpp>
-
- using namespace boost::math::tools;
-
- struct beta_data_generator
- {
- NTL::RR operator()(NTL::RR a, NTL::RR b)
- {
- //
- // If we throw a domain error then test_data will
- // ignore this input point. We'll use this to filter
- // out all cases where a < b since the beta function
- // is symmetrical in a and b:
- //
- if(a < b)
- throw std::domain_error("");
-
- // very naively calculate spots with lgamma:
- NTL::RR g1, g2, g3;
- int s1, s2, s3;
- g1 = boost::math::lgamma(a, &s1);
- g2 = boost::math::lgamma(b, &s2);
- g3 = boost::math::lgamma(a+b, &s3);
- g1 += g2 - g3;
- g1 = exp(g1);
- g1 *= s1 * s2 * s3;
- return g1;
- }
- };
-
-To create the data, we'll need to input the domains for a and b
-for which the function will be tested: the function `get_user_parameter_info`
-is designed for just that purpose. The start of main will look something like:
-
- // Set the precision on RR:
- NTL::RR::SetPrecision(1000); // bits.
- NTL::RR::SetOutputPrecision(40); // decimal digits.
-
- parameter_info<NTL::RR> arg1, arg2;
- test_data<NTL::RR> data;
-
- std::cout << "Welcome.\n"
- "This program will generate spot tests for the beta function:\n"
- " beta(a, b)\n\n";
-
- bool cont;
- std::string line;
-
- do{
- // prompt the user for the domain of a and b to test:
- get_user_parameter_info(arg1, "a");
- get_user_parameter_info(arg2, "b");
-
- // create the data:
- data.insert(beta_data_generator(), arg1, arg2);
-
- // see if the user want's any more domains tested:
- std::cout << "Any more data [y/n]?";
- std::getline(std::cin, line);
- boost::algorithm::trim(line);
- cont = (line == "y");
- }while(cont);
-
-[caution 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 ['million test points in total].
-Don't say you weren't warned!]
-
-There's just one final step now, and that's to write the test data to file:
-
- std::cout << "Enter name of test data file [default=beta_data.ipp]";
- std::getline(std::cin, line);
- boost::algorithm::trim(line);
- if(line == "")
- line = "beta_data.ipp";
- std::ofstream ofs(line.c_str());
- write_code(ofs, data, "beta_data");
-
-The format of the test data looks something like:
-
- #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
- static const boost::array<boost::array<T, 3>, 1830>
- beta_med_data = {
- SC_(0.4883005917072296142578125),
- SC_(0.4883005917072296142578125),
- SC_(3.245912809500479157065104747353807392371),
- SC_(3.5808107852935791015625),
- SC_(0.4883005917072296142578125),
- SC_(1.007653173802923954909901438393379243537),
- /* ... lots of rows skipped */
- };
-
-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 tuple rather than a value, then we would have had
-one entry for each element in the tuple in addition to the input parameters.
-
-The first #define serves two purposes:
-
-* It reduces the file sizes considerably: all those `static_cast`'s add up to a lot
-of bytes otherwise (they are needed to suppress compiler warnings when `T` is
-narrower than a `long double`).
-* It provides a useful customisation point: for example if we were testing
-a user-defined type that has more precision than a `long double` we could change
-it to:
-
-[^#define SC_(x) lexical_cast<T>(BOOST_STRINGIZE(x))]
-
-in order to ensure that no truncation of the values occurs prior to conversion
-to `T`. Note that this isn't used by default as it's rather hard on the compiler
-when the table is large.
-
-[h5 Example 3: Profiling a Continued Fraction for Convergence and Accuracy]
-
-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 ] and b[sub N ] of the continued fraction
-each time it's invoked:
-
- template <class T>
- struct upper_incomplete_gamma_fract
- {
- private:
- T z, a;
- int k;
- public:
- typedef std::pair<T,T> result_type;
-
- upper_incomplete_gamma_fract(T a1, T z1)
- : z(z1-a1+1), a(a1), k(0)
- {
- }
-
- result_type operator()()
- {
- ++k;
- z += 2;
- return result_type(k * (a - k), z);
- }
- };
-
-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 tuple:
-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):
-
- #include <boost/math/tools/test_data.hpp>
- #include <boost/math/tools/test.hpp>
- #include <boost/math/special_functions/gamma.hpp>
- #include <boost/math/tools/ntl.hpp>
- #include <boost/tr1/tuple.hpp>
-
- template <class T>
- struct profile_gamma_fraction
- {
- typedef std::tr1::tuple<T, T> result_type;
-
- result_type operator()(T val)
- {
- using namespace boost::math::tools;
- // estimate the true value, using arbitary precision
- // arithmetic and NTL::RR:
- NTL::RR rval(val);
- upper_incomplete_gamma_fract<NTL::RR> f1(rval, rval);
- NTL::RR true_val = continued_fraction_a(f1, 1000);
- //
- // Now get the aproximation at double precision, along with the number of
- // iterations required:
- boost::uintmax_t iters = std::numeric_limits<boost::uintmax_t>::max();
- upper_incomplete_gamma_fract<T> f2(val, val);
- T found_val = continued_fraction_a(f2, std::numeric_limits<T>::digits, iters);
- //
- // Work out the relative error, as measured in units of epsilon:
- T err = real_cast<T>(relative_error(true_val, NTL::RR(found_val)) / std::numeric_limits<T>::epsilon());
- //
- // now just return the results as a tuple:
- return std::tr1::make_tuple(err, iters);
- }
- };
-
-Feeding that functor into test_data allows rapid output of csv data,
-for whatever type `T` we may be interested in:
-
- int main()
- {
- using namespace boost::math::tools;
- // create an object to hold the data:
- test_data<double> data;
- // insert 500 points at uniform intervals between just after 0 and 100:
- data.insert(profile_gamma_fraction<double>(), make_periodic_param(0.01, 100.0, 100));
- // print out in csv format:
- write_csv(std::cout, data, ", ");
- return 0;
- }
-
-This time there's no need to plot a graph, the first few rows are:
-
- a and z, Error/epsilon, Iterations required
-
- 0.01, 9723.14, 4726
- 1.0099, 9.54818, 87
- 2.0098, 3.84777, 40
- 3.0097, 0.728358, 25
- 4.0096, 2.39712, 21
- 5.0095, 0.233263, 16
-
-So it's pretty clear that this fraction shouldn't be used for small values
-of a and z.
-
-[h4 reference]
-[#test_data_reference]
-
-Most of this tool has been described already in the examples above, we'll
-just add the following notes on the non-member functions:
-
- template <class T>
- parameter_info<T> make_random_param(T start_range, T end_range, int n_points);
-
-Tells class test_data to test /n_points/ random values in the range
-[start_range,end_range].
-
- template <class T>
- parameter_info<T> make_periodic_param(T start_range, T end_range, int n_points);
-
-Tells class test_data to test /n_points/ evenly spaced values in the range
-[start_range,end_range].
-
- template <class T>
- parameter_info<T> make_power_param(T basis, int start_exponent, int end_exponent);
-
-Tells class test_data to test points of the form ['basis + R * 2[super expon]] for each
-/expon/ in the range [start_exponent, end_exponent], and /R/ a random number in \[0.5, 1\].
-
- template <class T>
- bool get_user_parameter_info(parameter_info<T>& info, const char* param_name);
-
-Prompts the user for the parameter range and form to use.
-
-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":
-
- parameter_info<double> p = make_random_param(2.0, 5.0, 10);
- p.type |= dummy_param;
-
-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.
-
-[endsect][/section:test_data Graphing, Profiling, and Generating Test Data for Special Functions]
-
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]

Deleted: sandbox/math_toolkit/libs/math/doc/test_html4_symbols.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/test_html4_symbols.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,144 +0,0 @@
-[section:test_HTML_4_Symbols test HTML4 symbols]
-[/ Examples of using all the Greek and Math symbols defined in HTML4_symbols.qbk]
-[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html]
-
-[/ Also some miscellaneous math charaters added to this list - see the end.]
-
-[/ To use, enclose the template name in square brackets.]
-
-
-[fnof],
-[Alpha],
-[Beta],
-[Gamma],
-[Delta],
-[Epsilon],
-[Zeta],
-[Eta],
-[Theta],
-[Iota],
-[Kappa],
-[Lambda],
-[Mu],
-[Nu],
-[Xi],
-[Omicron],
-[Pi],
-[Rho],
-[Sigma],
-[Tau],
-[Upsilon],
-[Phi],
-[Chi],
-[Psi],
-[Omega],
-[alpha],
-[beta],
-[gamma],
-[delta],
-[epsilon],
-[zeta],
-[eta],
-[theta],
-[iota],
-[kappa],
-[lambda],
-[mu],
-[nu],
-[xi],
-[omicron],
-[pi],
-[rho],
-[sigmaf],
-[sigma],
-[tau],
-[upsilon],
-[phi],
-[chi],
-[psi],
-[omega],
-[thetasym],
-[upsih],
-[piv],
-[bull],
-[hellip],
-[prime],
-[Prime],
-[oline],
-[frasl],
-[weierp],
-[image],
-[real],
-[trade],
-[alefsym],
-[larr],
-[uarr],
-[rarr],
-[darr],
-[harr],
-[crarr],
-[lArr],
-[uArr],
-[rArr],
-[dArr],
-[hArr],
-[forall],
-[part],
-[exist],
-[empty],
-[nabla],
-[isin],
-[notin],
-[ni],
-[prod],
-[sum],
-[minus],
-[lowast],
-[radic],
-[prop],
-[infin],
-[ang],
-[and],
-[or],
-[cap],
-[cup],
-[int],
-[there4],
-[sim],
-[cong],
-[asymp],
-[ne],
-[equiv],
-[le],
-[ge],
-[subset],
-[superset],
-[nsubset],
-[sube],
-[supe],
-[oplus],
-[otimes],
-[perp],
-[sdot],
-[lceil],
-[rceil],
-[lfloor],
-[rfloor],
-[lang],
-[rang],
-[loz],
-[spades],
-[clubs],
-[hearts],
-[diams],
-
-[endsect]
-
-[/ test_MTML4_symbols.qbk
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-
-

Deleted: sandbox/math_toolkit/libs/math/doc/tgamma.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/tgamma.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,202 +0,0 @@
-[section:tgamma Gamma]
-
-[h4 Synopsis]
-
-``
-#include <boost/math/special_functions/gamma.hpp>
-``
-
- namespace boost{ namespace math{
-
- template <class T>
- ``__sf_result`` tgamma(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` tgamma(T z, const ``__Policy``&);
-
- template <class T>
- ``__sf_result`` tgamma1pm1(T dz);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` tgamma1pm1(T dz, const ``__Policy``&);
-
- }} // namespaces
-
-[h4 Description]
-
- template <class T>
- ``__sf_result`` tgamma(T z);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` tgamma(T z, const ``__Policy``&);
-
-Returns the "true gamma" (hence name tgamma) of value z:
-
-[equation gamm1]
-
-[$../graphs/gamma.png]
-
-[optional_policy]
-
-There are effectively two versions of the [@http://en.wikipedia.org/wiki/Gamma_function 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 __lanczos. In practice any built in
-floating point type you will encounter has an appropriate __lanczos
-defined for it. It is also possible, given enough machine time, to generate
-further __lanczos's using the program libs/math/tools/lanczos_generator.cpp.
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the result is `double` when T is an integer type, and T otherwise.
-
- template <class T>
- ``__sf_result`` tgamma1pm1(T dz);
-
- template <class T, class ``__Policy``>
- ``__sf_result`` tgamma1pm1(T dz, const ``__Policy``&);
-
-Returns `tgamma(dz + 1) - 1`. Internally the implementation does not make
-use of the addition and subtraction implied by the definition, leading to
-accurate results even for very small `dz`. However, the implementation is
-capped to either 35 digit accuracy, or to the precision of the __lanczos
-associated with type T, whichever is more accurate.
-
-The return type of this function is computed using the __arg_pomotion_rules:
-the result is `double` when T is an integer type, and T otherwise.
-
-[optional_policy]
-
-[h4 Accuracy]
-
-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, __glibc, __hpc and __cephes libraries.
-Unless otherwise specified any floating point type that is narrower
-than the one shown will have __zero_error.
-
-[table
-[[Significand Size] [Platform and Compiler] [Factorials and Half factorials] [Values Near Zero] [Values Near 1 or 2] [Values Near a Negative Pole]]
-[[53] [Win32 Visual C++ 8]
-[Peak=1.9 Mean=0.7
-
-(GSL=3.9)
-
-(__cephes=3.0)]
-[Peak=2.0 Mean=1.1
-
-(GSL=4.5)
-
-(__cephes=1)]
-[Peak=2.0 Mean=1.1
-
-(GSL=7.9)
-
-(__cephes=1.0)]
-[Peak=2.6 Mean=1.3
-
-(GSL=2.5)
-
-(__cephes=2.7)] ]
-[[64] [Linux IA32 / GCC]
-[Peak=300 Mean=49.5
-
-(__glibc Peak=395 Mean=89)]
-[Peak=3.0 Mean=1.4
-
-(__glibc Peak=11 Mean=3.3)]
-[Peak=5.0 Mean=1.8
-
-(__glibc Peak=0.92 Mean=0.2)]
-[Peak=157 Mean=65
-
-(__glibc Peak=205 Mean=108)] ]
-[[64] [Linux IA64 / GCC]
-[__glibc Peak 2.8 Mean=0.9
-
-(__glibc Peak 0.7)]
-[Peak=4.8 Mean=1.5
-
-(__glibc Peak 0)]
-[Peak=4.8 Mean=1.5
-
-(__glibc Peak 0)]
-
-[Peak=5.0 Mean=1.7
-(__glibc Peak 0)] ]
-[[113] [HPUX IA64, aCC A.06.06]
-[Peak=2.5 Mean=1.1
-
-(__hpc Peak 0)]
-[Peak=3.5 Mean=1.7
-
-(__hpc Peak 0)]
-[Peak=3.5 Mean=1.6
-
-(__hpc Peak 0)]
-[Peak=5.2 Mean=1.92
-
-(__hpc Peak 0)] ]
-]
-
-[h4 Testing]
-
-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.
-
-The function `tgamma1pm1` is tested against values calculated very naively
-using the formula `tgamma(1+dz)-1` with a lanczos approximation accurate
-to around 100 decimal digits.
-
-[h4 Implementation]
-
-The generic version of the `tgamma` function is implemented by combining the series and
-continued fraction representations for the incomplete gamma function:
-
-[equation gamm2]
-
-where /l/ is an arbitrary integration limit: choosing [^l = max(10, a)]
-seems to work fairly well.
-
-For types of known precision the __lanczos is used, a traits class
-`boost::math::lanczos::lanczos_traits` maps type T to an appropriate
-approximation.
-
-For z in the range -20 < z < 1 then recursion is used to shift to z > 1 via:
-
-[equation gamm3]
-
-For very small z, this helps to preserve the identity:
-
-[equation gamm4]
-
-For z < -20 the reflection formula:
-
-[equation gamm5]
-
-is used. Particular care has to be taken to evaluate the `z * sin([pi][space] * z)` part:
-a special routine is used to reduce z prior to multiplying by [pi][space] to ensure that the
-result in is the range [0, [pi]/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 /exceptionally/ high).
-
-Finally if the argument is a small integer then table lookup of the factorial
-is used.
-
-The function `tgamma1pm1` is implemented using rational approximations [jm_rationals] in the
-region `-0.5 < dz < 2`. These are the same approximations (and internal routines)
-that are used for __lgamma, and so aren't detailed further here. The result of
-the approximation is `log(tgamma(dz+1))` which can fed into __expm1 to give
-the desired result. Outside the range `-0.5 < dz < 2` then the naive formula
-`tgamma1pm1(dz) = tgamma(dz+1)-1` can be used directly.
-
-[endsect][/section:tgamma The Gamma Function]
-[/
- Copyright 2006 John Maddock and Paul A. Bristow.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
-]
-

Deleted: sandbox/math_toolkit/libs/math/doc/thread_safety.qbk
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/thread_safety.qbk 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,23 +0,0 @@
-[section:threads Thread Safety]
-
-The library is fully thread safe and re-entrant provided the function
-and class templates in the library are instantiated with
-built-in floating point types: i.e. the types `float`, `double`
-and `long double`.
-
-However, the library [*is not thread safe] when
-used with user-defined (i.e. class type) numeric types.
-
-The reason for the latter limitation is the need to
-initialise symbolic constants using constructs such as:
-
- static const T coefficient_array = { ... list of values ... };
-
-Which is always thread safe when T is a built-in floating point type,
-but not when T is a user defined type: as in this case there
-is a need for T's constructors to be run, leading to potential
-race conditions.
-
-This limitation may be addressed in a future release.
-
-[endsect] [/section:threads Thread Safety]

Deleted: sandbox/math_toolkit/libs/math/doc/win32_nmake.mak
==============================================================================
--- sandbox/math_toolkit/libs/math/doc/win32_nmake.mak 2007-10-08 12:49:39 EDT (Mon, 08 Oct 2007)
+++ (empty file)
@@ -1,54 +0,0 @@
-
-QB="C:/download/open/xml/bin/quickbook.exe"
-XSLTPROC="C:/download/open/xml/bin/xsltproc-win32/xsltproc.exe"
-BOOST=c:/data/boost/boost/trunk
-FO=C:/Progra~1/xep/xep.bat
-COMMON_XSL_PARAM=--stringparam admon.graphics "1" --stringparam body.start.indent "0pt" --stringparam chunk.first.sections "1" --stringparam chunk.section.depth "10" --stringparam fop.extensions "0" --stringparam generate.section.toc.level "10" --stringparam html.stylesheet "../../../../../../trunk/doc/html/boostbook.css" --stringparam navig.graphics "1" --stringparam page.margin.inner "0.5in" --stringparam page.margin.outer "0.5in" --stringparam paper.type "A4" --stringparam toc.max.depth "4" --stringparam toc.section.depth "10" --stringparam xep.extensions "1"
-PDF_XSL_PARAM=--stringparam admon.graphics.extension ".svg" --stringparam use.role.for.mediaobject 1 --stringparam preferred.mediaobject.role print --stringparam admon.graphics.path "../html/images/"
-HTML_XSL_PARAM=
-PROJECT_NAME=math
-
-all : pdf html
-
-pdf : pdf/$(PROJECT_NAME).pdf
-html : html/index.html
-
-xml/$(PROJECT_NAME).xml :
- -mkdir xml
- $(QB) --output-file=xml\$(PROJECT_NAME).xml $(PROJECT_NAME).qbk
-
-xml/$(PROJECT_NAME).docbook : xml\$(PROJECT_NAME).xml xml/catalog.xml
- set XML_CATALOG_FILES=xml/catalog.xml
- $(XSLTPROC) $(COMMON_XSL_PARAM) --xinclude -o "xml\$(PROJECT_NAME).docbook" "$(BOOST)\tools\boostbook\xsl\docbook.xsl" "xml\$(PROJECT_NAME).xml"
-
-xml/$(PROJECT_NAME).fo : xml\$(PROJECT_NAME).docbook xml/catalog.xml
- set XML_CATALOG_FILES=xml/catalog.xml
- $(XSLTPROC) $(COMMON_XSL_PARAM) $(PDF_XSL_PARAM) --xinclude -o "xml\$(PROJECT_NAME).fo" "$(BOOST)\tools\boostbook\xsl\fo.xsl" "xml\$(PROJECT_NAME).docbook"
-
-pdf/$(PROJECT_NAME).pdf : xml\$(PROJECT_NAME).fo
- -mkdir pdf
- set JAVA_HOME=C:/PROGRA~1/Java/j2re1.4.2_12
- call $(FO) xml\$(PROJECT_NAME).fo pdf\$(PROJECT_NAME).pdf
-
-html/index.html : xml\$(PROJECT_NAME).fo
- -mkdir html
- set XML_CATALOG_FILES=xml/catalog.xml
- $(XSLTPROC) $(COMMON_XSL_PARAM) $(HTML_XSL_PARAM) --xinclude -o "html/" "$(BOOST)\tools\boostbook\xsl\html.xsl" "xml\$(PROJECT_NAME).docbook"
-
-xml/catalog.xml :
- @echo <<xml/catalog.xml
-<?xml version="1.0"?>
-<!DOCTYPE catalog
- PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN"
- "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
-<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
- <rewriteURI uriStartString="http://www.boost.org/tools/boostbook/dtd/" rewritePrefix="file:///$(BOOST)/tools/boostbook/dtd/"/>
- <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix="file:///C:/download/open/xml/docbook-xsl-snapshot/"/>
- <rewriteURI uriStartString="http://www.oasis-open.org/docbook/xml/4.2/" rewritePrefix="file:///C:/download/open/xml/docbook-xml/"/>
-</catalog>
-<<
-
-
-
-
-


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