From 0bc7181e617451d21c13b5c08d9eec8a3f328de0 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 4 Oct 2010 15:17:21 +0000 Subject: [PATCH] Lots of minor fixes: mostly configuration issues. Change to use std::tuple when available. Add two new distributions: inverse gamma and inverse chi squared. [SVN r65749] --- build/Jamfile.v2 | 3 +- config/Jamfile.v2 | 3 + config/has_gcc_visibility.cpp | 13 + doc/html/index.html | 10 +- doc/math.qbk | 5 +- doc/sf_and_dist/FAQ.qbk | 87 +++ doc/sf_and_dist/background.qbk | 13 +- doc/sf_and_dist/building.qbk | 15 +- doc/sf_and_dist/common_overviews.qbk | 6 +- doc/sf_and_dist/credits.qbk | 9 +- doc/sf_and_dist/dist_reference.qbk | 4 +- doc/sf_and_dist/dist_tutorial.qbk | 52 +- doc/sf_and_dist/distributions/binomial.qbk | 2 +- doc/sf_and_dist/distributions/gamma.qbk | 5 +- .../distributions/inverse_chi_squared.qbk | 176 ++++++ .../distributions/inverse_gamma.qbk | 129 +++++ .../distributions/inverse_gamma_example.qbk | 15 + doc/sf_and_dist/distributions/non_members.qbk | 10 +- doc/sf_and_dist/error_handling.qbk | 22 +- doc/sf_and_dist/fpclassify.qbk | 4 +- .../graphs/inverse_chi_squared_cdf.png | Bin 0 -> 50133 bytes .../graphs/inverse_chi_squared_cdf.svg | 79 +++ .../graphs/inverse_chi_squared_pdf.png | Bin 0 -> 39793 bytes .../graphs/inverse_chi_squared_pdf.svg | 72 +++ doc/sf_and_dist/graphs/inverse_gamma_cdf.png | Bin 0 -> 42954 bytes doc/sf_and_dist/graphs/inverse_gamma_cdf.svg | 75 +++ doc/sf_and_dist/graphs/inverse_gamma_pdf.png | Bin 0 -> 34350 bytes doc/sf_and_dist/graphs/inverse_gamma_pdf.svg | 69 +++ doc/sf_and_dist/html/index.html | 27 +- .../html/math_toolkit/backgrounders.html | 6 +- .../backgrounders/implementation.html | 78 ++- .../math_toolkit/backgrounders/lanczos.html | 20 +- .../html/math_toolkit/backgrounders/refs.html | 43 +- .../backgrounders/relative_error.html | 8 +- .../math_toolkit/backgrounders/remez.html | 28 +- doc/sf_and_dist/html/math_toolkit/dist.html | 12 +- .../html/math_toolkit/dist/dist_ref.html | 10 +- .../dist/dist_ref/dist_algorithms.html | 12 +- .../math_toolkit/dist/dist_ref/dists.html | 10 +- .../dist/dist_ref/dists/bernoulli_dist.html | 16 +- .../dist/dist_ref/dists/beta_dist.html | 72 +-- .../dist/dist_ref/dists/binomial_dist.html | 34 +- .../dist/dist_ref/dists/cauchy_dist.html | 26 +- .../dist/dist_ref/dists/chi_squared_dist.html | 24 +- .../dist/dist_ref/dists/exp_dist.html | 16 +- .../dist/dist_ref/dists/extreme_dist.html | 14 +- .../dist/dist_ref/dists/f_dist.html | 20 +- .../dist/dist_ref/dists/gamma_dist.html | 34 +- .../dist_ref/dists/hypergeometric_dist.html | 22 +- .../dists/inverse_chi_squared_dist.html | 471 ++++++++++++++++ .../dist_ref/dists/inverse_gamma_dist.html | 382 +++++++++++++ .../dist/dist_ref/dists/laplace_dist.html | 20 +- .../dist/dist_ref/dists/logistic_dist.html | 14 +- .../dist/dist_ref/dists/lognormal_dist.html | 14 +- .../dist/dist_ref/dists/nc_beta_dist.html | 18 +- .../dist_ref/dists/nc_chi_squared_dist.html | 20 +- .../dist/dist_ref/dists/nc_f_dist.html | 16 +- .../dist/dist_ref/dists/nc_t_dist.html | 18 +- .../dists/negative_binomial_dist.html | 32 +- .../dist/dist_ref/dists/normal_dist.html | 16 +- .../dist/dist_ref/dists/pareto.html | 28 +- .../dist/dist_ref/dists/poisson_dist.html | 18 +- .../dist/dist_ref/dists/rayleigh.html | 24 +- .../dist/dist_ref/dists/students_t_dist.html | 16 +- .../dist/dist_ref/dists/triangular_dist.html | 16 +- .../dist/dist_ref/dists/uniform_dist.html | 16 +- .../dist/dist_ref/dists/weibull.html | 32 +- .../html/math_toolkit/dist/dist_ref/nmp.html | 86 +-- .../html/math_toolkit/dist/future.html | 14 +- .../html/math_toolkit/dist/stat_tut.html | 8 +- .../dist/stat_tut/dist_params.html | 19 +- .../math_toolkit/dist/stat_tut/overview.html | 6 +- .../dist/stat_tut/overview/complements.html | 6 +- .../dist/stat_tut/overview/generic.html | 78 ++- .../dist/stat_tut/overview/headers.html | 28 +- .../dist/stat_tut/overview/objects.html | 13 +- .../dist/stat_tut/overview/parameters.html | 6 +- .../dist/stat_tut/overview/summary.html | 6 +- .../math_toolkit/dist/stat_tut/variates.html | 24 +- .../html/math_toolkit/dist/stat_tut/weg.html | 10 +- .../dist/stat_tut/weg/binom_eg.html | 6 +- .../stat_tut/weg/binom_eg/binom_conf.html | 8 +- .../stat_tut/weg/binom_eg/binom_size_eg.html | 6 +- .../binom_eg/binomial_coinflip_example.html | 6 +- .../weg/binom_eg/binomial_quiz_example.html | 14 +- .../dist/stat_tut/weg/c_sharp.html | 6 +- .../math_toolkit/dist/stat_tut/weg/cs_eg.html | 6 +- .../stat_tut/weg/cs_eg/chi_sq_intervals.html | 8 +- .../dist/stat_tut/weg/cs_eg/chi_sq_size.html | 6 +- .../dist/stat_tut/weg/cs_eg/chi_sq_test.html | 6 +- .../dist/stat_tut/weg/dist_construct_eg.html | 27 +- .../dist/stat_tut/weg/error_eg.html | 23 +- .../math_toolkit/dist/stat_tut/weg/f_eg.html | 6 +- .../dist/stat_tut/weg/find_eg.html | 6 +- .../weg/find_eg/find_location_eg.html | 9 +- .../weg/find_eg/find_mean_and_sd_eg.html | 14 +- .../stat_tut/weg/find_eg/find_scale_eg.html | 8 +- .../dist/stat_tut/weg/inverse_gamma_eg.html | 49 ++ .../dist/stat_tut/weg/nag_library.html | 6 +- .../dist/stat_tut/weg/nccs_eg.html | 12 +- .../stat_tut/weg/nccs_eg/nccs_power_eg.html | 29 +- .../dist/stat_tut/weg/neg_binom_eg.html | 6 +- .../weg/neg_binom_eg/neg_binom_conf.html | 6 +- .../weg/neg_binom_eg/neg_binom_size_eg.html | 6 +- .../negative_binomial_example1.html | 6 +- .../negative_binomial_example2.html | 6 +- .../dist/stat_tut/weg/normal_example.html | 6 +- .../weg/normal_example/normal_misc.html | 26 +- .../math_toolkit/dist/stat_tut/weg/st_eg.html | 6 +- .../dist/stat_tut/weg/st_eg/paired_st.html | 6 +- .../weg/st_eg/tut_mean_intervals.html | 8 +- .../stat_tut/weg/st_eg/tut_mean_size.html | 6 +- .../stat_tut/weg/st_eg/tut_mean_test.html | 6 +- .../weg/st_eg/two_sample_students_t.html | 6 +- .../html/math_toolkit/extern_c.html | 6 +- .../html/math_toolkit/extern_c/c99.html | 10 +- .../html/math_toolkit/extern_c/tr1.html | 16 +- .../html/math_toolkit/extern_c/tr1_ref.html | 12 +- .../html/math_toolkit/main_overview.html | 10 +- .../html/math_toolkit/main_overview/FAQ.html | 195 +++++++ .../math_toolkit/main_overview/building.html | 39 +- .../main_overview/compilers_overview.html | 10 +- .../math_toolkit/main_overview/contact.html | 12 +- .../main_overview/directories.html | 10 +- .../main_overview/error_handling.html | 69 ++- .../math_toolkit/main_overview/history1.html | 56 +- .../math_toolkit/main_overview/intro.html | 12 +- .../main_overview/namespaces.html | 17 +- .../main_overview/navigation.html | 8 +- .../math_toolkit/main_overview/perf_over.html | 12 +- .../main_overview/pol_overview.html | 10 +- .../main_overview/result_type.html | 6 +- .../math_toolkit/main_overview/threads.html | 6 +- .../html/math_toolkit/main_overview/tr1.html | 22 +- doc/sf_and_dist/html/math_toolkit/perf.html | 6 +- .../math_toolkit/perf/comp_compilers.html | 8 +- .../html/math_toolkit/perf/comparisons.html | 64 +-- .../html/math_toolkit/perf/getting_best.html | 8 +- .../html/math_toolkit/perf/interp.html | 17 +- .../html/math_toolkit/perf/perf_over.html | 10 +- .../html/math_toolkit/perf/perf_test_app.html | 6 +- .../html/math_toolkit/perf/tuning.html | 12 +- doc/sf_and_dist/html/math_toolkit/policy.html | 8 +- .../math_toolkit/policy/pol_overview.html | 10 +- .../html/math_toolkit/policy/pol_ref.html | 8 +- .../policy/pol_ref/assert_undefined.html | 11 +- .../policy/pol_ref/discrete_quant_ref.html | 60 +- .../pol_ref/error_handling_policies.html | 87 +-- .../policy/pol_ref/internal_promotion.html | 32 +- .../policy/pol_ref/iteration_pol.html | 6 +- .../policy/pol_ref/namespace_pol.html | 74 +-- .../policy/pol_ref/pol_ref_ref.html | 6 +- .../policy/pol_ref/policy_defaults.html | 38 +- .../policy/pol_ref/precision_pol.html | 41 +- .../math_toolkit/policy/pol_tutorial.html | 6 +- .../pol_tutorial/ad_hoc_dist_policies.html | 46 +- .../pol_tutorial/ad_hoc_sf_policies.html | 48 +- .../changing_policy_defaults.html | 29 +- .../pol_tutorial/namespace_policies.html | 274 ++++++---- .../pol_tutorial/policy_tut_defaults.html | 14 +- .../policy/pol_tutorial/policy_usage.html | 6 +- .../pol_tutorial/understand_dis_quant.html | 134 +++-- .../policy/pol_tutorial/user_def_err_pol.html | 146 ++--- .../policy/pol_tutorial/what_is_a_policy.html | 8 +- .../html/math_toolkit/special.html | 6 +- .../html/math_toolkit/special/bessel.html | 6 +- .../math_toolkit/special/bessel/bessel.html | 56 +- .../special/bessel/bessel_over.html | 26 +- .../math_toolkit/special/bessel/mbessel.html | 40 +- .../special/bessel/sph_bessel.html | 22 +- .../html/math_toolkit/special/ellint.html | 6 +- .../math_toolkit/special/ellint/ellint_1.html | 18 +- .../math_toolkit/special/ellint/ellint_2.html | 18 +- .../math_toolkit/special/ellint/ellint_3.html | 24 +- .../special/ellint/ellint_carlson.html | 18 +- .../special/ellint/ellint_intro.html | 18 +- .../html/math_toolkit/special/expint.html | 6 +- .../math_toolkit/special/expint/expint_i.html | 22 +- .../math_toolkit/special/expint/expint_n.html | 18 +- .../html/math_toolkit/special/factorials.html | 6 +- .../special/factorials/sf_binomial.html | 12 +- .../factorials/sf_double_factorial.html | 12 +- .../special/factorials/sf_factorial.html | 16 +- .../factorials/sf_falling_factorial.html | 12 +- .../factorials/sf_rising_factorial.html | 12 +- .../html/math_toolkit/special/inv_hyper.html | 6 +- .../math_toolkit/special/inv_hyper/acosh.html | 12 +- .../math_toolkit/special/inv_hyper/asinh.html | 12 +- .../math_toolkit/special/inv_hyper/atanh.html | 16 +- .../special/inv_hyper/inv_hyper_over.html | 6 +- .../html/math_toolkit/special/powers.html | 6 +- .../math_toolkit/special/powers/cbrt.html | 10 +- .../math_toolkit/special/powers/ct_pow.html | 20 +- .../math_toolkit/special/powers/expm1.html | 10 +- .../math_toolkit/special/powers/hypot.html | 10 +- .../math_toolkit/special/powers/log1p.html | 10 +- .../math_toolkit/special/powers/powm1.html | 10 +- .../math_toolkit/special/powers/sqrt1pm1.html | 10 +- .../html/math_toolkit/special/sf_beta.html | 6 +- .../special/sf_beta/beta_derivative.html | 14 +- .../special/sf_beta/beta_function.html | 18 +- .../special/sf_beta/ibeta_function.html | 58 +- .../special/sf_beta/ibeta_inv_function.html | 16 +- .../html/math_toolkit/special/sf_erf.html | 6 +- .../special/sf_erf/error_function.html | 20 +- .../special/sf_erf/error_inv.html | 16 +- .../html/math_toolkit/special/sf_gamma.html | 6 +- .../special/sf_gamma/digamma.html | 16 +- .../special/sf_gamma/gamma_derivatives.html | 14 +- .../special/sf_gamma/gamma_ratios.html | 18 +- .../math_toolkit/special/sf_gamma/igamma.html | 26 +- .../special/sf_gamma/igamma_inv.html | 16 +- .../math_toolkit/special/sf_gamma/lgamma.html | 20 +- .../math_toolkit/special/sf_gamma/tgamma.html | 18 +- .../html/math_toolkit/special/sf_poly.html | 6 +- .../math_toolkit/special/sf_poly/hermite.html | 18 +- .../special/sf_poly/laguerre.html | 20 +- .../special/sf_poly/legendre.html | 22 +- .../special/sf_poly/sph_harm.html | 28 +- .../html/math_toolkit/special/sinc.html | 6 +- .../special/sinc/sinc_overview.html | 6 +- .../math_toolkit/special/sinc/sinc_pi.html | 6 +- .../math_toolkit/special/sinc/sinhc_pi.html | 6 +- .../html/math_toolkit/special/zetas.html | 6 +- .../html/math_toolkit/special/zetas/zeta.html | 18 +- doc/sf_and_dist/html/math_toolkit/status.html | 6 +- .../html/math_toolkit/status/compilers.html | 10 +- .../html/math_toolkit/status/credits.html | 15 +- .../html/math_toolkit/status/history1.html | 54 +- .../html/math_toolkit/status/issues.html | 54 +- .../html/math_toolkit/toolkit.html | 7 +- .../html/math_toolkit/toolkit/internals1.html | 7 +- .../math_toolkit/toolkit/internals1/cf.html | 14 +- .../toolkit/internals1/constants.html | 10 +- .../toolkit/internals1/minima.html | 18 +- .../toolkit/internals1/rational.html | 12 +- .../toolkit/internals1/roots.html | 32 +- .../toolkit/internals1/roots2.html | 12 +- .../toolkit/internals1/series_evaluation.html | 12 +- .../toolkit/internals1/tuples.html | 84 +++ .../html/math_toolkit/toolkit/internals2.html | 12 +- .../toolkit/internals2/error_test.html | 12 +- .../toolkit/internals2/minimax.html | 10 +- .../toolkit/internals2/polynomials.html | 10 +- .../toolkit/internals2/test_data.html | 31 +- .../toolkit/internals_overview.html | 6 +- .../html/math_toolkit/using_udt.html | 6 +- .../math_toolkit/using_udt/archetypes.html | 6 +- .../html/math_toolkit/using_udt/concepts.html | 10 +- .../math_toolkit/using_udt/dist_concept.html | 6 +- .../html/math_toolkit/using_udt/use_mpfr.html | 6 +- .../html/math_toolkit/using_udt/use_ntl.html | 6 +- doc/sf_and_dist/html/math_toolkit/utils.html | 6 +- .../html/math_toolkit/utils/fpclass.html | 14 +- .../html/math_toolkit/utils/next_float.html | 6 +- .../utils/next_float/float_advance.html | 10 +- .../utils/next_float/float_distance.html | 10 +- .../utils/next_float/float_next.html | 10 +- .../utils/next_float/float_prior.html | 10 +- .../utils/next_float/nextafter.html | 12 +- .../html/math_toolkit/utils/rounding.html | 6 +- .../math_toolkit/utils/rounding/modf.html | 6 +- .../math_toolkit/utils/rounding/round.html | 6 +- .../math_toolkit/utils/rounding/trunc.html | 6 +- .../math_toolkit/utils/sign_functions.html | 10 +- doc/sf_and_dist/html4_symbols.qbk | 26 +- doc/sf_and_dist/implementation.qbk | 35 +- doc/sf_and_dist/issues.qbk | 1 - doc/sf_and_dist/latin1_symbols.qbk | 10 +- doc/sf_and_dist/license.qbk | 2 +- doc/sf_and_dist/math.qbk | 67 ++- doc/sf_and_dist/minimax.qbk | 4 +- doc/sf_and_dist/performance.qbk | 3 + doc/sf_and_dist/policy.qbk | 22 +- doc/sf_and_dist/policy_tutorial.qbk | 31 +- doc/sf_and_dist/references.qbk | 23 +- doc/sf_and_dist/roadmap.qbk | 12 +- doc/sf_and_dist/roots.qbk | 10 +- doc/sf_and_dist/structure.qbk | 4 + doc/sf_and_dist/test_data.qbk | 10 +- doc/sf_and_dist/tuple.qbk | 28 + example/Jamfile.v2 | 6 +- example/binomial_coinflip_example.cpp | 2 +- example/binomial_confidence_limits.cpp | 14 +- example/binomial_example3.cpp | 91 ---- example/binomial_example_nag.cpp | 2 +- example/binomial_quiz_example.cpp | 8 +- example/binomial_sample_sizes.cpp | 106 +++- example/c_error_policy_example.cpp | 19 +- example/chi_square_std_dev_test.cpp | 22 +- example/distribution_construction.cpp | 48 +- example/error_handling_example.cpp | 30 +- example/error_policies_example.cpp | 28 +- example/error_policy_example.cpp | 39 +- example/f_test.cpp | 181 +++++-- example/find_location_example.cpp | 11 +- example/find_mean_and_sd_normal.cpp | 10 +- example/find_root_example.cpp | 9 +- example/find_scale_example.cpp | 2 +- example/laplace_example.cpp | 4 +- example/nc_chi_sq_example.cpp | 24 +- example/neg_binom_confidence_limits.cpp | 2 +- example/neg_binomial_sample_sizes.cpp | 3 +- example/negative_binomial_example1.cpp | 2 +- example/negative_binomial_example2.cpp | 2 +- example/normal_misc_examples.cpp | 5 +- example/policy_eg_1.cpp | 43 +- example/policy_eg_10.cpp | 132 +++-- example/policy_eg_2.cpp | 25 +- example/policy_eg_3.cpp | 41 +- example/policy_eg_4.cpp | 67 +-- example/policy_eg_5.cpp | 43 +- example/policy_eg_6.cpp | 80 +-- example/policy_eg_7.cpp | 74 ++- example/policy_eg_8.cpp | 76 ++- example/policy_eg_9.cpp | 92 ++-- example/policy_ref_snip1.cpp | 71 ++- example/policy_ref_snip10.cpp | 24 +- example/policy_ref_snip11.cpp | 31 +- example/policy_ref_snip12.cpp | 43 +- example/policy_ref_snip13.cpp | 51 +- example/policy_ref_snip2.cpp | 31 +- example/policy_ref_snip3.cpp | 18 +- example/policy_ref_snip4.cpp | 9 +- example/policy_ref_snip5.cpp | 24 +- example/policy_ref_snip6.cpp | 23 +- example/policy_ref_snip7.cpp | 25 +- example/policy_ref_snip8.cpp | 24 +- example/policy_ref_snip9.cpp | 29 +- example/students_t_single_sample.cpp | 357 ++++++------ example/students_t_two_samples.cpp | 170 +++--- include/boost/math/bindings/rr.hpp | 12 +- include/boost/math/distributions.hpp | 6 +- .../boost/math/distributions/bernoulli.hpp | 4 +- include/boost/math/distributions/beta.hpp | 4 +- include/boost/math/distributions/binomial.hpp | 2 +- .../boost/math/distributions/chi_squared.hpp | 29 +- .../boost/math/distributions/complement.hpp | 2 +- .../detail/inv_discrete_quantile.hpp | 2 +- include/boost/math/distributions/fisher_f.hpp | 6 +- include/boost/math/distributions/fwd.hpp | 10 +- include/boost/math/distributions/gamma.hpp | 2 +- .../distributions/inverse_chi_squared.hpp | 391 +++++++++++++ .../math/distributions/inverse_gamma.hpp | 458 ++++++++++++++++ .../boost/math/distributions/lognormal.hpp | 4 +- .../math/distributions/negative_binomial.hpp | 4 +- .../math/distributions/non_central_beta.hpp | 116 ++-- .../distributions/non_central_chi_squared.hpp | 148 ++--- .../math/distributions/non_central_f.hpp | 58 +- include/boost/math/distributions/pareto.hpp | 2 +- include/boost/math/distributions/poisson.hpp | 16 +- include/boost/math/distributions/rayleigh.hpp | 4 +- include/boost/math/distributions/weibull.hpp | 4 +- include/boost/math/special_functions/cbrt.hpp | 2 +- .../math/special_functions/detail/erf_inv.hpp | 4 +- .../special_functions/detail/fp_traits.hpp | 3 +- .../detail/ibeta_inverse.hpp | 12 +- .../detail/igamma_inverse.hpp | 14 +- .../special_functions/detail/igamma_large.hpp | 4 +- .../detail/t_distribution_inv.hpp | 4 +- .../math/special_functions/fpclassify.hpp | 4 +- .../boost/math/special_functions/gamma.hpp | 2 +- .../boost/math/special_functions/lanczos.hpp | 2 + include/boost/math/special_functions/pow.hpp | 26 +- include/boost/math/tools/roots.hpp | 12 +- include/boost/math/tools/test_data.hpp | 8 +- include/boost/math/tools/tuple.hpp | 112 ++++ performance/distributions.cpp | 6 - test/Jamfile.v2 | 16 +- .../dist_inv_chi_sq_incl_test.cpp | 25 + .../compile_test/dist_inv_gamma_incl_test.cpp | 25 + test/compile_test/instantiate.hpp | 4 + test/compile_test/tools_roots_inc_test.cpp | 3 +- test/log1p_expm1_test.cpp | 8 +- test/pow_test.cpp | 26 + test/test_cbrt.cpp | 12 +- test/test_error_handling.cpp | 69 +++ test/test_gamma_dist.cpp | 12 +- .../test_inverse_chi_squared_distribution.cpp | 512 ++++++++++++++++++ test/test_inverse_gamma_distribution.cpp | 437 +++++++++++++++ test/test_normal.cpp | 41 +- test/test_roots.cpp | 8 +- tools/Jamfile.v2 | 58 ++ tools/bessel_data.cpp | 2 +- tools/beta_data.cpp | 4 +- tools/carlson_ellint_data.cpp | 16 +- tools/digamma_data.cpp | 6 +- tools/ellint_pi3_data.cpp | 4 +- tools/erf_data.cpp | 12 +- tools/expint_data.cpp | 1 - tools/expint_i_data.cpp | 1 - tools/gamma_P_inva_data.cpp | 5 +- tools/generate_test_values.cpp | 2 +- tools/hermite_data.cpp | 4 +- tools/hypergeometric_dist_data.cpp | 6 +- tools/ibeta_data.cpp | 21 +- tools/ibeta_inv_data.cpp | 5 +- tools/ibeta_invab_data.cpp | 5 +- tools/igamma_data.cpp | 13 +- tools/laguerre_data.cpp | 8 +- tools/legendre_data.cpp | 8 +- tools/log1p_expm1_data.cpp | 4 +- tools/process_perf_results.cpp | 3 +- tools/spherical_harmonic_data.cpp | 6 +- tools/tgamma_ratio_data.cpp | 6 +- tools/zeta_data.cpp | 4 +- 406 files changed, 8464 insertions(+), 3527 deletions(-) create mode 100644 config/has_gcc_visibility.cpp create mode 100644 doc/sf_and_dist/FAQ.qbk create mode 100644 doc/sf_and_dist/distributions/inverse_chi_squared.qbk create mode 100644 doc/sf_and_dist/distributions/inverse_gamma.qbk create mode 100644 doc/sf_and_dist/distributions/inverse_gamma_example.qbk create mode 100644 doc/sf_and_dist/graphs/inverse_chi_squared_cdf.png create mode 100644 doc/sf_and_dist/graphs/inverse_chi_squared_cdf.svg create mode 100644 doc/sf_and_dist/graphs/inverse_chi_squared_pdf.png create mode 100644 doc/sf_and_dist/graphs/inverse_chi_squared_pdf.svg create mode 100644 doc/sf_and_dist/graphs/inverse_gamma_cdf.png create mode 100644 doc/sf_and_dist/graphs/inverse_gamma_cdf.svg create mode 100644 doc/sf_and_dist/graphs/inverse_gamma_pdf.png create mode 100644 doc/sf_and_dist/graphs/inverse_gamma_pdf.svg create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/inverse_chi_squared_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/inverse_gamma_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/inverse_gamma_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/FAQ.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals1/tuples.html create mode 100644 doc/sf_and_dist/tuple.qbk delete mode 100644 example/binomial_example3.cpp create mode 100644 include/boost/math/distributions/inverse_chi_squared.hpp create mode 100644 include/boost/math/distributions/inverse_gamma.hpp create mode 100644 include/boost/math/tools/tuple.hpp create mode 100644 test/compile_test/dist_inv_chi_sq_incl_test.cpp create mode 100644 test/compile_test/dist_inv_gamma_incl_test.cpp create mode 100644 test/test_inverse_chi_squared_distribution.cpp create mode 100644 test/test_inverse_gamma_distribution.cpp create mode 100644 tools/Jamfile.v2 diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 index 4b96d51ba..fe21fc30f 100644 --- a/build/Jamfile.v2 +++ b/build/Jamfile.v2 @@ -13,9 +13,10 @@ project #intel-linux:off intel-darwin:off msvc-7.1:off - gcc:-fvisibility=hidden + #gcc:-fvisibility=hidden intel-linux:-fvisibility=hidden sun:-xldscope=hidden + [ check-target-builds ../config//has_gcc_visibility : -fvisibility=hidden : ] ; cpp-pch pch : ../src/tr1/pch.hpp : ../src/tr1 shared:BOOST_MATH_TR1_DYN_LINK=1 ; diff --git a/config/Jamfile.v2 b/config/Jamfile.v2 index 0ac348e8e..440796de2 100644 --- a/config/Jamfile.v2 +++ b/config/Jamfile.v2 @@ -15,11 +15,14 @@ obj has_mpfr_class : has_mpfr_class.cpp : obj has_ntl_rr : has_ntl_rr.cpp : $(ntl-path)/include ; obj has_gmpxx : has_gmpxx.cpp : $(gmp_path) $(gmp_path)/mpfr $(gmp_path)/gmpfrxx ; +obj has_gcc_visibility : has_gcc_visibility.cpp : + gcc:-fvisibility=hidden gcc:-Werror ; explicit has_long_double_support ; explicit has_mpfr_class ; explicit has_ntl_rr ; explicit has_gmpxx ; +explicit has_gcc_visibility ; diff --git a/config/has_gcc_visibility.cpp b/config/has_gcc_visibility.cpp new file mode 100644 index 000000000..6c7d6f915 --- /dev/null +++ b/config/has_gcc_visibility.cpp @@ -0,0 +1,13 @@ +// Copyright John Maddock 20010. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef __GNUC__ +# error "This is a GCC specific test case". +#endif + +int main() +{ + return 0; +} diff --git a/doc/html/index.html b/doc/html/index.html index 6fc94d160..e51c8fab0 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Boost.Math - + @@ -17,7 +17,7 @@
-
+

@@ -51,11 +51,11 @@ Thijs van den Berg

-
-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -461,7 +461,7 @@
- +

Last revised: , at

Last revised: September 01, 2010 at 19:10:43 +0100


diff --git a/doc/math.qbk b/doc/math.qbk index ca58aaa9e..8c1ce0142 100644 --- a/doc/math.qbk +++ b/doc/math.qbk @@ -1,12 +1,11 @@ [article Boost.Math - [quickbook 1.4] - [copyright 2006, 2007, 2008, 2009 John Maddock, Paul A. Bristow, Hubert Holin, Daryle Walker, Xiaogang Zhang, Bruno Lalande, Johan Råde, Gautam Sewani and Thijs van den Berg] + [quickbook 1.5] + [copyright 2006, 2007, 2008, 2009, 2010 John Maddock, Paul A. Bristow, Hubert Holin, Daryle Walker, Xiaogang Zhang, Bruno Lalande, Johan Råde, Gautam Sewani and Thijs van den Berg] [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 http://www.boost.org/LICENSE_1_0.txt]) ] - [category math] [authors [Maddock, John], [Bristow, Paul A.], [Holin, Hubert], [Walker, Daryle], [Zhang, Xiaogang], [Lalande, Bruno], [Råde, Johan], [Sewani, Gautam], [van den Berg, Thijs]] [last-revision $Date$] ] diff --git a/doc/sf_and_dist/FAQ.qbk b/doc/sf_and_dist/FAQ.qbk new file mode 100644 index 000000000..2aeb3fa08 --- /dev/null +++ b/doc/sf_and_dist/FAQ.qbk @@ -0,0 +1,87 @@ +[section:faq Frequently Asked Questions FAQ] + +# ['I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user and I don't see where the functions like dnorm(mean, sd) are in Boost.Math?] [br] +Nearly all are provided, and many more like mean, skewness, quantiles, complements ... +but Boost.Math makes full use of C++, and it looks a bit different. +But do not panic! See section on construction and the many examples. +Briefly, the distribution is constructed with the parameters (like location and scale) +(things after the | in representation like P(X=k|n, p) or ; in a common represention of pdf f(x; [mu][sigma][super 2]). +Functions like pdf, cdf are called with the name of that distribution and the random variate often called x or k. +For example, `normal my_norm(0, 1); pdf(my_norm, 2.0);` [br] +# ['I'm allegic to reading manuals and prefer to learn from examples.][br] +Fear not - you are not alone! Many examples are available for functions and distributions. +Some are referenced directly from the text. Others can be found at \boost_latest_release\libs\math\example. +If you are a Visual Studio user, you should be able to create projects from each of these, +making sure that the Boost library is in the include directories list. +# ['How do I make sure that the Boost library is in the Visual Studio include directories list?][br] +You can add an include path, for example, your Boost place /boost-latest_release, +for example `X:/boost_1_45_0/` if you have a separate partition X for Boost releases. +Or you can use an environment variable BOOST_ROOT set to your Boost place, and include that. +Visual Studio before 2010 provided Tools, Options, VC++ Directories to control directories: +Visual Studio 2010 instead provides property sheets to assist. +You may find it convenient to create a new one adding \boost-latest_release; +to the existing include items in $(IncludePath). +# ['I'm a FORTRAN/NAG/SPSS/SAS/Cephes/MathCad/R user and +I don't see where the properties like mean, median, mode, variance, skewness of distributions are in Boost.Math?][br] +They are all available (if defined for the parameters with which you constructed the distribution) via __usual_accessors. +# ['I am a C programmer. Can I user Boost.Math with C?][br] +Yes you can, including all the special functions, and TR1 functions like isnan. +They appear as C functions, by being declared as "extern C". +# ['I am a C# (Basic? F# FORTRAN? Other CLI?) programmer. Can I use Boost.Math with C#?] [br] +Yes you can, including all the special functions, and TR1 functions like isnan. +But you [*must build the Boost.Math as a dynamic library (.dll) and compile with the /CLI option]. +See the boost/math/dot_net_example folder which contains an example that +builds a simple statistical distribution app with a GUI. +See [@http://sourceforge.net/projects/distexplorer/ Statistical Distribution Explorer] [br] +# ['What these "policies" things for?] [br] +Policies are a powerful (if necessarily complex) fine-grain mechanism that +allow you to customise the behaviour of the Boost.Math library according to your precise needs. +See __policy_section. But if, very probably, the default behaviour suits you, you don't need to know more. +# ['I am a C user and expect to see global C-style`::errno` set for overflow/errors etc?] [br] +You can achieve what you want - see __error_policy and __user_error_handling and many examples. +# ['I am a C user and expect to silently return a max value for overflow?] [br] +You (and C++ users too) can return whatever you want on overflow +- see __overflow_error and __error_policy and several examples. +# ['I don't want any error message for overflow etc?] [br] +You can control exactly what happens for all the abnormal conditions, including the values returned. +See __domain_error, __overflow_error __error_policy __user_error_handling etc and examples. +# ['My environment doesn't allow and/or I don't want exceptions. Can I still user Boost.Math?] [br] +Yes but you must customise the error handling: see __user_error_handling and __changing_policy_defaults . +# ['The docs are several hundreds of pages long! Can I read the docs off-line or on paper?] [br] +Yes - you can download the Boost current release of most documentation +as a zip of pdfs (including Boost.Math) from Sourceforge, +for example [@https://sourceforge.net/projects/boost/files/boost-docs/1.45.0/boost_pdf_1_45_0.tar.gz/download]. +And you can print any pages you need (or even print all pages - but be warned that there are several hundred!). +Both html and pdf versions are highly hyperlinked. +The entire Boost.Math pdf can be searched with Adobe Reader, Edit, Find ... +This can often find what you seek, a partial substitute for a full index. +# ['I want a compact version for an embedded application. Can I use float precision?] [br] +Yes - by selecting RealType template parameter as float: +for example normal_distribution your_normal(mean, sd); +(But double may still be used internally, so space saving may be less that you hope for). +You can also change the promotion policy, but accuracy might be much reduced. +# ['I seem to get somewhat different results compared to other programs. Why?] +We hope Boost.Math to be more accurate: our priority is accuracy (over speed). +See the section on accuracy. But for evaluations that require iterations +there are parameters which can change the required accuracy. You might be able to +squeeze a little more accuracy at the cost of runtime. +# ['Will my program run more slowly compared to other math functions and statistical libraries?] +Probably, thought not always, and not by too much: our priority is accuracy. +For most functions, making sure you have the latest compiler version with all optimisations switched on is the key to speed. +For evaluations that require iteration, you may be able to gain a little more speed at the expense of accuracy. +See detailed suggestions and results on __performance. +# ['Where are the pre-built libraries?] [br] +Good news - you probably don't need any! - just #include . +But in the unlikely event that you do, see __building. +# ['I don't see the function or distribution that I want.] [br] +You could try an email to ask the authors - but no promises! + +[endsect] [/section:faq Frequently Asked Questions] + +[/ + Copyright 2010 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). +] + diff --git a/doc/sf_and_dist/background.qbk b/doc/sf_and_dist/background.qbk index 34a0bfeb0..dca8d3276 100644 --- a/doc/sf_and_dist/background.qbk +++ b/doc/sf_and_dist/background.qbk @@ -3,12 +3,12 @@ [@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'), +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. +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 @@ -18,7 +18,7 @@ therefore has two parameters: 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 +and a second argument for the __random_variate. So taking our binomial distribution example, we would write: pdf(binomial_distribution(n, p), k); @@ -30,16 +30,15 @@ example, we would write: 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 +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. +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 diff --git a/doc/sf_and_dist/building.qbk b/doc/sf_and_dist/building.qbk index bc133550e..f2c30f161 100644 --- a/doc/sf_and_dist/building.qbk +++ b/doc/sf_and_dist/building.qbk @@ -1,10 +1,15 @@ -[section:building If and How to Build the Library and its Examples and Tests] +[section:building If and How to Build a Boost.Math Library, and its Examples and Tests] -[h4 Building the Library] +[h4 Building a Library (shared, dynamic .dll or static .lib)] The first thing you need to ask yourself is "Do I need to build anything at all?" as the bulk of this library is header only: meaning you can use it just by -#including the necessary header(s). Refer to +#including the necessary header(s). + +For most simple uses, +including a header (or few) is best for compile time and program size. + +Refer to [link math_toolkit.extern_c C99 and C++ TR1 C-style Functions] for pros and cons of using the TR1 components as opposed to the header only ones. @@ -15,7 +20,7 @@ using Boost.Build, from a commandline boost-root directory issue a command like: bjam toolset=gcc --with-math install -will do the job on Linux, while: +that will do the job on Linux, while: bjam toolset=msvc --with-math --build-type=complete stage @@ -94,7 +99,7 @@ will do this automatically when appropriate. [endsect] [/ building.qbk - Copyright 2006, 2007, 2008 John Maddock and Paul A. Bristow. + Copyright 2006, 2007, 2008, 2010 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). diff --git a/doc/sf_and_dist/common_overviews.qbk b/doc/sf_and_dist/common_overviews.qbk index 236331ca9..b25bd9c8b 100644 --- a/doc/sf_and_dist/common_overviews.qbk +++ b/doc/sf_and_dist/common_overviews.qbk @@ -7,7 +7,7 @@ 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 +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, @@ -53,7 +53,7 @@ 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 +for most needs. However, you should note that this 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 @@ -73,7 +73,7 @@ from this library are: 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. +8 fold] have been found between some Windows compilers for example. The [link math_toolkit.perf performance section] contains more information on the performance diff --git a/doc/sf_and_dist/credits.qbk b/doc/sf_and_dist/credits.qbk index bc708e7ae..6398b5942 100644 --- a/doc/sf_and_dist/credits.qbk +++ b/doc/sf_and_dist/credits.qbk @@ -30,6 +30,9 @@ Gautam Sewani coded the logistic distribution as part of a Google Summer of Code M. A. (Thijs) van den Berg coded the Laplace distribution. (Thijs has also threatened to implement some multivariate distributions). +Thomas Mang requested the inverse gamma in chi squared distributions +for Bayesian applications and helped in their implementation. + Professor Nico Temme for advice on the inverse incomplete beta function. [@http://www.shoup.net Victor Shoup for NTL], @@ -42,6 +45,10 @@ We are grateful to Joel Guzman for helping us stress-test his program used to generate the html and pdf versions of this document, adding several new features en route. +Thanks to Mark Coleman and Georgi Boshnakov for spot test values +from __Mathematica, and of course, +to Eric Weissten for nurturing __Mathworld, an invaluable resource. + Plots of the functions and distributions were prepared in [@http://www.w3.org/ W3C] standard [@http://www.svg.org/ Scalable Vector Graphic (SVG)] format @@ -62,7 +69,7 @@ Arnaldur Gylfason, John Phillips, Stephan Tolksdorf and Jeff Garland [endsect] [/section:credits Credits and Acknowledgements] [/ - Copyright 2006, 2007, 2008, 2009 John Maddock and Paul A. Bristow. + Copyright 2006, 2007, 2008, 2009, 2010 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). diff --git a/doc/sf_and_dist/dist_reference.qbk b/doc/sf_and_dist/dist_reference.qbk index 9ca5a249e..f5b036fa5 100644 --- a/doc/sf_and_dist/dist_reference.qbk +++ b/doc/sf_and_dist/dist_reference.qbk @@ -13,6 +13,8 @@ [include distributions/extreme_value.qbk] [include distributions/fisher.qbk] [include distributions/gamma.qbk] +[include distributions/inverse_chi_squared.qbk] +[include distributions/inverse_gamma.qbk] [include distributions/hypergeometric.qbk] [include distributions/laplace.qbk] [include distributions/logistic.qbk] @@ -121,7 +123,7 @@ opportunity to integrate the statistical tests with this framework at some later [endsect][/section:future Extras Future Directions] [/ dist_reference.qbk - Copyright 2006 John Maddock and Paul A. Bristow. + Copyright 2006, 2010 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). diff --git a/doc/sf_and_dist/dist_tutorial.qbk b/doc/sf_and_dist/dist_tutorial.qbk index 2fd24633c..a059ad3de 100644 --- a/doc/sf_and_dist/dist_tutorial.qbk +++ b/doc/sf_and_dist/dist_tutorial.qbk @@ -1,4 +1,4 @@ -[/ def names end in distrib to avoid clashes] +[/ def names all end in distrib to avoid clashes with names of functions] [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]] @@ -19,14 +19,22 @@ provides a few worked examples of applying the library to statistical tests. 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 or -the "include everything" header: . +the "include all the distributions" header: . For example, to use the Students-t distribution include either or +You also need to bring distribution names into scope, +perhaps with a `using namespace boost::math;` declaration, + +or specific `using` declarations like `using boost::math::normal;` (*recommended*). + +[caution Some math function names are also used in namespace std so including could cause ambiguity!] + [endsect] [/ section:headers Headers and Namespaces] [section:objects Distributions are Objects] @@ -63,7 +71,12 @@ 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; + // using namespace boost::math; // Avoid potential ambiguity with names in std + // Safer to declare specific functions with using statement(s): + + using boost::math::beta_distribution; + using boost::math::binomial_distribution; + using boost::math::students_t; // Construct a students_t distribution with 4 degrees of freedom: students_t d1(4); @@ -136,37 +149,47 @@ 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). +n (the number of trials) and p (the probability of success on any 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. +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] +The concept of a __random_variable is closely linked to the term __random_variate: +a random variate is a particular value (outcome) of a random variable. 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. +are conventionally distinguished (for example in Wikipedia and Wolfram MathWorld) +by placing a semi-colon or vertical bar) +/after/ the __random_variable (whose value you 'choose'), +to separate the variate from the parameter(s) that defines the shape of the distribution.[br] +For example, the binomial distribution probability distribution function (PDF) is written as +['f(k| n, p)] = Pr(K = k|n, p) = probability of observing k successes out of n trials. +K is the __random_variable, k is the __random_variate, +the parameters are n (trials) and p (probability). ] [/tip Random Variates and Distribution Parameters] +[note By convention, __random_variate are lower case, usually k is integral, x if real, and +__random_variable are upper case, K if integral, X if real. But this implementation treats +all as floating point values `RealType`, so if you really want an integral result, +you must round: see note on Discrete Probability Distributions below for details.] + 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(n, p), k);` -The ranges of random variate values that are permitted and are supported can be +The ranges of __random_variate values that are permitted and are supported can be tested by using two functions `range` and `support`. -The distribution (effectively the random variate) is said to be 'supported' +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"]. @@ -177,7 +200,7 @@ Outside are uninteresting zones where the pdf is zero, and the cdf zero or unity For most distributions, with probability distribution functions one might describe as 'well-behaved', we have decided that it is most useful for the supported range -to exclude random variate values like exact zero *if the end point is discontinuous*. +to *exclude* random variate values like exact zero *if the end point is discontinuous*. For example, the Weibull (scale 1, shape 1) distribution smoothly heads for unity as the random variate x declines towards zero. But at x = zero, the value of the pdf is suddenly exactly zero, by definition. @@ -412,6 +435,7 @@ Now that you have the basics, the next section looks at some worked examples. [include distributions/binomial_example.qbk] [include distributions/negative_binomial_example.qbk] [include distributions/normal_example.qbk] +[/include distributions/inverse_gamma_example.qbk] [include distributions/nc_chi_squared_example.qbk] [include distributions/error_handling_example.qbk] [include distributions/find_location_and_scale.qbk] @@ -424,7 +448,7 @@ Now that you have the basics, the next section looks at some worked examples. [endsect] [/ section:stat_tut Statistical Distributions Tutorial] [/ dist_tutorial.qbk - Copyright 2006 John Maddock and Paul A. Bristow. + Copyright 2006, 2010 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). diff --git a/doc/sf_and_dist/distributions/binomial.qbk b/doc/sf_and_dist/distributions/binomial.qbk index d790e1708..ec94106e3 100644 --- a/doc/sf_and_dist/distributions/binomial.qbk +++ b/doc/sf_and_dist/distributions/binomial.qbk @@ -323,7 +323,7 @@ the context of this distribution: is a real-number, and not an integer. Depending on the use case you may want to take either the floor or ceiling of the result. For example: -`quantile(complement(binomial(n, p), P))``]] +`quantile(complement(binomial(n, p), P))`]] ] [h4 Examples] diff --git a/doc/sf_and_dist/distributions/gamma.qbk b/doc/sf_and_dist/distributions/gamma.qbk index 24b5d8adf..8568df2b6 100644 --- a/doc/sf_and_dist/distributions/gamma.qbk +++ b/doc/sf_and_dist/distributions/gamma.qbk @@ -127,10 +127,11 @@ and /q = 1-p/. [[kurtosis excess][6 / k ]] ] -[endsect][/section:normal_dist Normal] +[endsect][/section:gamma_dist Gamma (and Erlang) Distribution] + [/ - Copyright 2006 John Maddock and Paul A. Bristow. + Copyright 2006, 2010 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). diff --git a/doc/sf_and_dist/distributions/inverse_chi_squared.qbk b/doc/sf_and_dist/distributions/inverse_chi_squared.qbk new file mode 100644 index 000000000..943db4295 --- /dev/null +++ b/doc/sf_and_dist/distributions/inverse_chi_squared.qbk @@ -0,0 +1,176 @@ +[section:inverse_chi_squared_dist Inverse Chi Squared Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class inverse_chi_squared_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + inverse_chi_squared_distribution(RealType df = 1); // Not explicitly scaled, default 1/df. + inverse_chi_squared_distribution(RealType df, RealType scale = 1/df); // Scaled. + + RealType degrees_of_freedom()const; // Default 1. + RealType scale()const; // Optional scale [xi] (variance), default 1/degrees_of_freedom. + }; + + }} // namespace boost // namespace math + +The inverse chi squared distribution is a continuous probability distribution +of the *reciprocal* of a variable distributed according to the chi squared distribution. + +The sources below give confusingly different formulae +using different symbols for the distribution pdf, +but they are all the same, or related by a change of variable, or choice of scale. + +Two constructors are available to implement both the scaled and (implicitly) unscaled versions. + +The main version has an explicit scale parameter which implements the +[@http://en.wikipedia.org/wiki/Scaled-inverse-chi-square_distribution scaled inverse chi_squared distribution]. + +A second version has an implicit scale = 1/degrees of freedom and gives the 1st definition in the +[@http://en.wikipedia.org/wiki/Inverse-chi-square_distribution Wikipedia inverse chi_squared distribution]. +The 2nd Wikipedia inverse chi_squared distribution definition can be implemented +by explicitly specifying a scale = 1. + +Both definitions are also available in Wolfram Mathematica and in __R (geoR) with default scale = 1/degrees of freedom. + +See + +* Inverse chi_squared distribution [@http://en.wikipedia.org/wiki/Inverse-chi-square_distribution] +* Scaled inverse chi_squared distribution[@http://en.wikipedia.org/wiki/Scaled-inverse-chi-square_distribution] +* R inverse chi_squared distribution functions [@http://hosho.ees.hokudai.ac.jp/~kubo/Rdoc/library/geoR/html/InvChisquare.html R ] +* Inverse chi_squared distribution functions [@http://mathworld.wolfram.com/InverseChi-SquaredDistribution.html Weisstein, Eric W. "Inverse Chi-Squared Distribution." From MathWorld--A Wolfram Web Resource.] +* Inverse chi_squared distribution reference [@http://reference.wolfram.com/mathematica/ref/InverseChiSquareDistribution.html Weisstein, Eric W. "Inverse Chi-Squared Distribution reference." From Wolfram Mathematica.] + +The inverse_chi_squared distribution is used in +[@http://en.wikipedia.org/wiki/Bayesian_statistics Bayesian statistics]: +the scaled inverse chi-square is conjugate prior for the normal distribution +with known mean, model parameter [sigma][pow2] (variance). + +See [@http://en.wikipedia.org/wiki/Conjugate_prior conjugate priors including a table of distributions and their priors.] + +See also __inverse_gamma_distrib and __chi_squared_distrib. + +The inverse_chi_squared distribution is a special case of a inverse_gamma distribution +with [nu] (degrees_of_freedom) shape ([alpha]) and scale ([beta]) where + +__spaces [alpha]= [nu] /2 and [beta] = [frac12]. + +[note This distribution *does* provide the typedef: + +``typedef inverse_chi_squared_distribution inverse_chi_squared;`` + +If you want a `double` precision inverse_chi_squared distribution you can use + +``boost::math::inverse_chi_squared_distribution<>`` + +or you can write `inverse_chi_squared my_invchisqr(2, 3);`] + +For degrees of freedom parameter [nu], +the (*unscaled*) inverse chi_squared distribution is defined by the probability density function (PDF): + +__spaces f(x;[nu]) = 2[super -[nu]/2] x[super -[nu]/2-1] e[super -1/2x] / [Gamma]([nu]/2) + +and Cumulative Density Function (CDF) + +__spaces F(x;[nu]) = [Gamma]([nu]/2, 1/2x) / [Gamma]([nu]/2) + +For degrees of freedom parameter [nu] and scale parameter [xi], +the *scaled* inverse chi_squared distribution is defined by the probability density function (PDF): + +__spaces f(x;[nu], [xi]) = ([xi][nu]/2)[super [nu]/2] e[super -[nu][xi]/2x] x[super -1-[nu]/2] / [Gamma]([nu]/2) + +and Cumulative Density Function (CDF) + +__spaces F(x;[nu], [xi]) = [Gamma]([nu]/2, [nu][xi]/2x) / [Gamma]([nu]/2) + +The following graphs illustrate how the PDF and CDF of the inverse chi_squared distribution +varies for a few values of parameters [nu] and [xi]: + +[graph inverse_chi_squared_pdf] [/.png or .svg] + +[graph inverse_chi_squared_cdf] + +[h4 Member Functions] + + inverse_chi_squared_distribution(RealType df = 1); // Implicitly scaled 1/df. + inverse_chi_squared_distribution(RealType df = 1, RealType scale); // Explicitly scaled. + +Constructs an inverse chi_squared distribution with [nu] degrees of freedom ['df], +and scale ['scale] with default value 1\/df. + +Requires that the degrees of freedom [nu] parameter is greater than zero, otherwise calls +__domain_error. + + RealType degrees_of_freedom()const; + +Returns the degrees_of_freedom [nu] parameter of this distribution. + + RealType scale()const; + +Returns the scale [xi] parameter of this distribution. + +[h4 Non-member Accessors] + +All the [link math_toolkit.dist.dist_ref.nmp usual non-member accessor functions] that are generic to all +distributions are supported: __usual_accessors. + +The domain of the random variate is \[0,+[infin]\]. +[note Unlike some definitions, this implementation supports a random variate +equal to zero as a special case, returning zero for both pdf and cdf.] + +[h4 Accuracy] + +The inverse gamma distribution is implemented in terms of the +incomplete gamma functions like the __inverse_gamma_distrib that use +__gamma_p and __gamma_q and their inverses __gamma_p_inv and __gamma_q_inv: +refer to the accuracy data for those functions for more information. +But in general, gamma (and thus inverse gamma) results are often accurate to a few epsilon, +>14 decimal digits accuracy for 64-bit double. +unless iteration is involved, as for the estimation of degrees of freedom. + +[h4 Implementation] + +In the following table [nu] is the degrees of freedom parameter and +[xi] is the scale parameter of the distribution, +/x/ is the random variate, /p/ is the probability and /q = 1-p/ its complement. +Parameters [alpha] for shape and [beta] for scale +are used for the inverse gamma function: [alpha] = [nu]/2 and [beta] = [nu] * [xi]/2. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = __gamma_p_derivative([alpha], [beta]/ x, [beta]) / x * x ]] +[[cdf][Using the relation: p = __gamma_q([alpha], [beta] / x) ]] +[[cdf complement][Using the relation: q = __gamma_p([alpha], [beta] / x) ]] +[[quantile][Using the relation: x = [beta][space]/ __gamma_q_inv([alpha], p) ]] +[[quantile from the complement][Using the relation: x = [alpha][space]/ __gamma_p_inv([alpha], q) ]] +[[mode][[nu] * [xi] / ([nu] + 2) ]] +[[median][no closed form analytic equation is known, but is evaluated as quantile(0.5)]] +[[mean][[nu][xi] / ([nu] - 2) for [nu] > 2, else a __domain_error]] +[[variance][2 [nu][pow2] [xi][pow2] / (([nu] -2)[pow2] ([nu] -4)) for [nu] >4, else a __domain_error]] +[[skewness][4 [sqrt]2 [sqrt]([nu]-4) /([nu]-6) for [nu] >6, else a __domain_error ]] +[[kurtosis_excess][12 * (5[nu] - 22) / (([nu] - 6) * ([nu] - 8)) for [nu] >8, else a __domain_error]] +[[kurtosis][3 + 12 * (5[nu] - 22) / (([nu] - 6) * ([nu]-8)) for [nu] >8, else a __domain_error]] +] [/table] + +[h4 References] + +# Bayesian Data Analysis, Andrew Gelman, John B. Carlin, Hal S. Stern, Donald B. Rubin, +ISBN-13: 978-1584883883, Chapman & Hall; 2 edition (29 July 2003). + +# Bayesian Computation with R, Jim Albert, ISBN-13: 978-0387922973, Springer; 2nd ed. edition (10 Jun 2009) + +[endsect] [/section:inverse_chi_squared_dist Inverse chi_squared Distribution] + +[/ + Copyright 2010 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). +] \ No newline at end of file diff --git a/doc/sf_and_dist/distributions/inverse_gamma.qbk b/doc/sf_and_dist/distributions/inverse_gamma.qbk new file mode 100644 index 000000000..177f2fd87 --- /dev/null +++ b/doc/sf_and_dist/distributions/inverse_gamma.qbk @@ -0,0 +1,129 @@ +[section:inverse_gamma_dist Inverse Gamma Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class inverse_gamma_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + inverse_gamma_distribution(RealType shape, RealType scale = 1) + + RealType shape()const; + RealType scale()const; + }; + + }} // namespaces + +The inverse_gamma distribution is a continuous probability distribution +of the reciprocal of a variable distributed according to the gamma distribution. + +The inverse_gamma distribution is used in Bayesian statistics. + +See [@http://en.wikipedia.org/wiki/Inverse-gamma_distribution inverse gamma distribution]. + +[@http://rss.acs.unt.edu/Rdoc/library/pscl/html/igamma.html R inverse gamma distribution functions]. + +[@http://reference.wolfram.com/mathematica/ref/InverseGammaDistribution.html Wolfram inverse gamma distribution]. + +See also __gamma_distrib. + + +[note +In spite of potential confusion with the inverse gamma function, this +distribution *does* provide the typedef: + +``typedef inverse_gamma_distribution gamma;`` + +If you want a `double` precision gamma distribution you can use + +``boost::math::inverse_gamma_distribution<>`` + +or you can write `inverse_gamma my_ig(2, 3);`] + +For shape parameter [alpha] and scale parameter [beta], it is defined +by the probability density function (PDF): + +__spaces f(x;[alpha], [beta]) = [beta][super [alpha]] * (1/x) [super [alpha]+1] exp(-[beta]/x) / [Gamma]([alpha]) + +and cumulative density function (CDF) + +__spaces F(x;[alpha], [beta]) = [Gamma]([alpha], [beta]/x) / [Gamma]([alpha]) + +The following graphs illustrate how the PDF and CDF of the inverse gamma distribution +varies as the parameters vary: + +[graph inverse_gamma_pdf] [/png or svg] + +[graph inverse_gamma_cdf] + +[h4 Member Functions] + + inverse_gamma_distribution(RealType shape = 1, RealType scale = 1); + +Constructs an inverse gamma distribution with shape [alpha] and scale [beta]. + +Requires that the shape and scale parameters are greater than zero, otherwise calls +__domain_error. + + RealType shape()const; + +Returns the [alpha] shape parameter of this inverse gamma distribution. + + RealType scale()const; + +Returns the [beta] scale parameter of this inverse gamma distribution. + +[h4 Non-member Accessors] + +All the [link math_toolkit.dist.dist_ref.nmp usual non-member accessor functions] that are generic to all +distributions are supported: __usual_accessors. + +The domain of the random variate is \[0,+[infin]\]. +[note Unlike some definitions, this implementation supports a random variate +equal to zero as a special case, returning zero for pdf and cdf.] + +[h4 Accuracy] + +The inverse gamma distribution is implemented in terms of the +incomplete gamma functions __gamma_p and __gamma_q and their +inverses __gamma_p_inv and __gamma_q_inv: refer to the accuracy +data for those functions for more information. +But in general, inverse_gamma results are accurate to a few epsilon, +>14 decimal digits accuracy for 64-bit double. + +[h4 Implementation] + +In the following table [alpha] is the shape parameter of the distribution, +[alpha][space] is its scale parameter, /x/ is the random variate, /p/ is the probability +and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = __gamma_p_derivative([alpha], [beta]/ x, [beta]) / x * x ]] +[[cdf][Using the relation: p = __gamma_q([alpha], [beta] / x) ]] +[[cdf complement][Using the relation: q = __gamma_p([alpha], [beta] / x) ]] +[[quantile][Using the relation: x = [beta][space]/ __gamma_q_inv([alpha], p) ]] +[[quantile from the complement][Using the relation: x = [alpha][space]/ __gamma_p_inv([alpha], q) ]] +[[mode][[beta] / ([alpha] + 1) ]] +[[median][no analytic equation is known, but is evaluated as quantile(0.5)]] +[[mean][[beta] / ([alpha] - 1) for [alpha] > 1, else a __domain_error]] +[[variance][([beta] * [beta]) / (([alpha] - 1) * ([alpha] - 1) * ([alpha] - 2)) for [alpha] >2, else a __domain_error]] +[[skewness][4 * sqrt ([alpha] -2) / ([alpha] -3) for [alpha] >3, else a __domain_error]] +[[kurtosis_excess][(30 * [alpha] - 66) / (([alpha]-3)*([alpha] - 4)) for [alpha] >4, else a __domain_error]] +] [/table] + +[endsect][/section:inverse_gamma_dist Inverse Gamma Distribution] + +[/ + Copyright 2010 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). +] + diff --git a/doc/sf_and_dist/distributions/inverse_gamma_example.qbk b/doc/sf_and_dist/distributions/inverse_gamma_example.qbk new file mode 100644 index 000000000..3feaa26e8 --- /dev/null +++ b/doc/sf_and_dist/distributions/inverse_gamma_example.qbk @@ -0,0 +1,15 @@ + +[section:inverse_gamma_eg Inverse Gamma Distribution Bayes Example] + +TODO + +[endsect] [/section:inverse_gamma_eg Inverse Gamma Distribution Bayes Example] + + +[/ + Copyright 2006, 2010 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). +] + diff --git a/doc/sf_and_dist/distributions/non_members.qbk b/doc/sf_and_dist/distributions/non_members.qbk index d94874226..07bb7378e 100644 --- a/doc/sf_and_dist/distributions/non_members.qbk +++ b/doc/sf_and_dist/distributions/non_members.qbk @@ -1,7 +1,7 @@ [section:nmp Non-Member Properties] Properties that are common to all distributions are accessed via non-member -getter functions. This allows more of these functions to be added over time +getter functions: non-membership allows more of these functions to be added over time, as the need arises. Unfortunately the literature uses many different and confusing names to refer to a rather small number of actual concepts; refer to the [link concept_index concept index] to find the property you @@ -70,7 +70,7 @@ to the integral from -infinity to x of the __pdf. This function may return a __domain_error if the random variable is outside the defined range for the distribution. -For example the following graph shows the cdf for the +For example, the following graph shows the cdf for the normal distribution: [$../graphs/cdf.png] @@ -98,7 +98,7 @@ function in a call to `complement`, for example: // print survival function for x=2.0: std::cout << cdf(complement(norm, 2.0)) << std::endl; -For example the following graph shows the __complement of the cdf for the +For example, the following graph shows the __complement of the cdf for the normal distribution: [$../graphs/survival.png] @@ -180,11 +180,11 @@ variate takes the value x. This function may return a __domain_error if the random variable is outside the defined range for the distribution. -For example for a standard normal distribution the pdf looks like this: +For example, for a standard normal distribution the pdf looks like this: [$../graphs/pdf.png] -[h4 [#math.dist.range]range] +[h4 [#math.dist.range]Range] template std::pair range(const ``['Distribution-Type]``& dist); diff --git a/doc/sf_and_dist/error_handling.qbk b/doc/sf_and_dist/error_handling.qbk index 4ef6f6ba4..34cf033fb 100644 --- a/doc/sf_and_dist/error_handling.qbk +++ b/doc/sf_and_dist/error_handling.qbk @@ -54,7 +54,7 @@ appropriate result]] ] The following tables show all the permutations of errors and actions, -with the default action for each error shown in bold: +with the *default action for each error shown in bold*: [table Possible Actions for Domain Errors [[Action] [Behaviour]] @@ -136,14 +136,19 @@ with the default action for each error shown in bold: this function must be defined by the user].]] ] +All these error conditions are in namespace boost::math::policies, +made available, for example, a by namespace declaration +using `namespace boost::math::policies;` or individual using declarations +`using boost::math::policies::overflow_error;`. + [heading Rationale] -The flexibility of the current implementation should be reasonably obvious, the +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. +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. @@ -180,7 +185,7 @@ 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. +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] @@ -328,8 +333,8 @@ 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 for which the result is indeterminate, Default is an -alternative default result that must be returned for ignore_error and -errno_on_error policies, and __Policy is the current policy in use for the +alternative default result that must be returned for `ignore_error` and +`errno_on_erro` policies, and __Policy is the current policy in use for the function that was called. The default policy for this function is `ignore_error`: note that this error @@ -351,8 +356,7 @@ 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 argument, -and __Policy is the current policy -in use for the called function. +and __Policy is the current policy in use for the called function. The default behaviour of this function is to throw a `boost::math::rounding_error`. @@ -384,7 +388,7 @@ listed above on [link overflow_error overflow], [endsect][/section:error_handling Error Handling] [/ - Copyright 2006 John Maddock and Paul A. Bristow. + Copyright 2006 - 2010 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). diff --git a/doc/sf_and_dist/fpclassify.qbk b/doc/sf_and_dist/fpclassify.qbk index a15e627a6..a21a5a50c 100644 --- a/doc/sf_and_dist/fpclassify.qbk +++ b/doc/sf_and_dist/fpclassify.qbk @@ -50,7 +50,7 @@ these as macros. That mean that the following have differing meanings: // it works for any type that has numeric_limits support for type z: (isnan)(z); // - // As above but with namespace qualification. + // As above but with explicit namespace qualification. (boost::math::isnan)(z); // // This will cause a compiler error if isnan is a native macro: @@ -58,7 +58,7 @@ these as macros. That mean that the following have differing meanings: // So always use instead: (boost::math::isnan)(z); // - // You can also add a using statment, + // You can also add a using statement, // globally to a .cpp file, or to a local function in a .hpp file. using boost::math::isnan; // so you can write the shorter and less cluttered diff --git a/doc/sf_and_dist/graphs/inverse_chi_squared_cdf.png b/doc/sf_and_dist/graphs/inverse_chi_squared_cdf.png new file mode 100644 index 0000000000000000000000000000000000000000..4592e5b194e029f05cba40ba053cc29d0a26618c GIT binary patch literal 50133 zcmeAS@N?(olHy`uVBq!ia0y~yV0y#Az&L?}je&vTtA^=q1_lO}VkgfK4h{~E8jh3> z1_lPs0*}aI1_s_^Ak28PIx~!cfkCpwHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^# z_B$IX1_lKNPZ!6KiaBrYme&Md{eS#p_@%v<=JLH*5TFr|CMX~x64<81rKM0eRk4G4 z>icj(@w%z&qYIU_LIl|DT?J)a142%@rSvoDrk1?lJL%4S`AjG0OF>@ZUq9E_e9CyY z_xYS^qg(rmi{I^Br5^Xw!;wR=MZk&UqSngjUCd5kPRFgAv)}FcbmYvmH|+vop+#+# z>+5(<2$q4>Dn^-dz5$CnZAlWk(F#_Raa3gkH(2^&muG@FSbCA@i;La4zpTjB(9=u1yQ@^j zu4aa^d*6bv)tubi%4%wDv-5Uws;jFP-&{VwZr0Im@y)rn&Di*4Dh_TdE-tQo*eYI7 zTKaV9^tfFs>YhG%^5JIs{K7Xk3@=@}^x^AQRSSz5D^_T@^~?2c-~Qdz{@S*jZ*Oj{ ziP~ix(Mh-sb-A4iss%EPlrD z;nnK(QG48Hot~Y)@8nG5^okD$**klBSROn$*nH&35rf=YCe!p{Z@sByir8OgYyba` zv2zkvwZFdX{KBs4lKuUNw!EhQ zo=+2%T%xz9ot0wUuqQq97J6l5toXUJq_i|NL~Cm0&D*!5E8p#We&%WV z*;z{&PHoG*{pxC6P|&2EbGtWYTvR%G`0(L7{MFUf-Pi9NJm^^Y{cgGbsyHTSq4+pnmS0IaB`q{cXNt z-69PyADEMzFX!gfKWr5jahPda zT{ija!i7S@!c!9uw?+Pmv$V8~{1ewJYaOPkrxzyT8u;zq-RS4lDmFGTl`of0pK|F^ z(Cpu@Z*9$<`;{^E;v(0xKSek$zVWe)?c2~@-!nUZpQLMG#rM1Al}{$R&#DlXcw!OQ%d-9}7hZZ`wM{LiN z?H1QpGd11nSSvKms_e~)RiUc`L|XUkvDvg~(~rO3??>(|QsoxYc`!SF-^1ne>y(s~ z4#l{y4f}jGJf88vqeqt({0$2U35blm`Jit9mrLGHo;?$imA(7GOv))xL`zF6OSZ}+ z?~a9%vhvG2JBv4ed+j77B=q9;cKxMGm-fip&r_dYGYOPf-@LIXdcqOCJumfO6YHAD z&25h!CEdAm=S*pGQc}dG6waERthaz>5(A*h^ecq>%z+tU!xYM<(DVUo97o0AW&9THvLXqVxl60 zRPVEeK#T&P8e}3Nn|C3YN>rL{D%gfU*EO6wJGFcJl z%w1GeR8UlO=J$dMyaw>301747ZkFIcd^YX7Eujk$jAWo2f0d3hBT6(&);Sy@>_LPH-ue_noY z6I*lRlqn)xqTZ_VdKQ+IEh~S2Pwcgt&x`}v>-Qe(5LCXguh#nUvEJn4eX?S|cV2iM z6&mUq7bo}c-@g?htJuD;H#5Ie;Jo+L)alcMV`5^~Ki^_l^8Vi3cXxMRk6gBC)1)

TVz~V5OsKuz<-gVODhFTb>jEU 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

mzm)D6U(#4%E(G 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/inverse_chi_squared_cdf.svg b/doc/sf_and_dist/graphs/inverse_chi_squared_cdf.svg new file mode 100644 index 000000000..33f61de6f --- /dev/null +++ b/doc/sf_and_dist/graphs/inverse_chi_squared_cdf.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + +0 +1 +2 +3 +4 +5 +6 +0 + +0 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.8 +0.9 +1 +1.1 +0 + +Probability + +Random Variable + + + + + + + + + + + + + + + +ν = 1 +ν = 3, (ξ = 1/3) +ν = 1, ξ = 1 +ν = 4, (ξ = 1/4) +ν = 3, (ξ = 1/5 + +Inverse Chi Squared Distribution CDF + + + diff --git a/doc/sf_and_dist/graphs/inverse_chi_squared_pdf.png b/doc/sf_and_dist/graphs/inverse_chi_squared_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..776eacc0a94c2d1811ecdae3ce191add7fe667b0 GIT binary patch literal 39793 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 CTix9N literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/inverse_chi_squared_pdf.svg b/doc/sf_and_dist/graphs/inverse_chi_squared_pdf.svg new file mode 100644 index 000000000..ce7b56ba4 --- /dev/null +++ b/doc/sf_and_dist/graphs/inverse_chi_squared_pdf.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + +0 +1 +2 +3 +4 +5 +6 +0 + +0 +1 +2 +3 +4 +0 + +Probability + +Random Variable + + + + + + + + + + + + + + + +ν = 1 +ν = 3, (ξ = 1/3) +ν = 3, ξ = 1 +ν = 4, (ξ = 1/4) +ν = 5, (ξ = 1/5) + +Inverse Chi Squared Distribution PDF + + + diff --git a/doc/sf_and_dist/graphs/inverse_gamma_cdf.png b/doc/sf_and_dist/graphs/inverse_gamma_cdf.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fdf7ec76f44818221d60860c0a03f3be4d0180 GIT binary patch literal 42954 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�ieBF4_P8Hs8!)VPgaBotrTE^-uLYDJiLne}62s zw6!nZxN#!zX7_@c?{~|8yxaZ0DtGU{CZQkuTCQ>#JZ8v!xW)I+&yVMCm=sSAc=pUS zv&JTG=gx<3rOg*yx=UHp-yw9~I0y~bu-wY-{|nlon2;;Nnd?wYxQ!HZ9yXUvcY2@6ZQtoH7o@AGB7 zs)D+p?0NB`pyI-X6DEmWI-8o>+0dnUK;VyGbd;x*5Vz37996k+vFlHsJ^IzeT3}Ji z^{Zqe^UL;EucAKusT4ePm|IXTu0h?OOF>`1*K_ihgzVMbtlTTsTPe1fS5{Vn#zEWo zWVK!ebW8|f(s#Ib?_R{CZ+eU7*$SRxay_)V-d?-u`Ije{N`j)9v#ooLr*;uqx(r^KhYlZ}ICUzkwDjye{<%+{JyWu`|KIzamzTHtt4rDRQbM>AA~VG=F``6mfG&aE*{qS+c}MmQQhR(#9JeURur-6^fvso2>p*Lu=LHFE5=R zJTT}fyAHA}cEA6F@bz)MFJ5GT=I?ixy*+eqZ}rB?&(Hkk?=5`HR`>Vob-wpcpFK;u zzpoawg{L|OwB@j)my3ONfA+N9A#*?fVhfx3F5l*HSZ%TGyCe4x^1uJ1aG`SNRC%$s zhiS(zyl)25FP9L<=RiWaOm(J*(e-kUdHHWV%v&B@uKpzF(N zt=KZ*-o^F8Kc1hTfB61=`OM7BfWW|mo72x5q@R;n6T5rc<$WvU>wYA*yX;-Jjt^98 z&Ydgk{@T*oT3JIyW~HVl({HI;Q`H$?{kdCqZRYHa=7u*bj7+AOu-KU|&*J7P$i8WG z=J#9kS6}^(IMvi>Iyrw9kc;cMaKYxv)vX8a-DCLtjQ2Rd{f*#s2`3IkrK{_Of3Wk* zB|JMb^X+t<8@Fybxw)~OpJxl2kFA!e|MR2p#;sdPkB)T8tToTRrjwENTIuanfjnMq zUlA{+ddo*fVSaD^tx8Eu+P?MSH|zHYvJSKH%(o6tDV)&w_Py-4h6WiHwr38mu589> zJV$#Zoj<%>zRkcmSiH0Yw2y6f-P{A>qN0w@iyxoc)Yr$y#m!wU6CD%NlYG4I;Yne| ztu0T&B9#`HM=l5syArOTV#*SJEne`&o;wv)F9cLnR1?2Hovzf~$YWz_dbZ+=hBzam z<&JWF;m}au8K&79Z{D^){P1w4fk}uc#JcIfN}2B8xWOSQIg{_br?>awojZ3P-v~M* z?$Oci#I$RF*Of;`N=8LR-HJCiH~l1*<9})r%e}^9-&^(P9J6o?3^TcF_{qshp!gY2 z*!~JePR~{HYKJagJLcx$Atz^Z!YLtvPe}N*LFFd7wDV?1wq|oDX0FtH1)Am;===Jb zCC=HInU$4Q_MW!Be*3mGbPo5?9+Is7bA8xtxEJ1q&FaO`FEhFl&|+=)A)# zD*`9{InMVXeSU4**Voq%A2_h!xT%SWiB*krKwzZif%OmmUwy*Fv-Emw2FsF-O9dS@ z9WDOft86@bviJA9cM>~OID4L*7eD!H$^XR7jW=!x-Pt>v(|&(QN@{5Gvoi}fY&Sn} zusPTug`?D5sYT$DeMc;NaywdUCRQ;rn~GI#F9V zW}D?^{l9bO4A1ZH@7tRW{f{~{b;^_nkB)Zd%hZW#CQdnje$IHfxnb zmUcF*TYF$x^5&a6WXq*@KYu57W6qpU@%!b3?f=U(`}$PX=3XjSRh#zcSZ~OWAA6kY z>U5u-m+#BHeJttRoWu!}g?Im#22HKBc)j`ew78_CW$|L=xP3L8{{H@ZzTc}32o63x zO*i_(L3a6s4-XD5;@jwLXJ>cf^huW4XT{zeN$or^<2$QaY)Y6)$kR~6pzI|Fo;`8d zGhI9?E8DQ__qVv%>0fNuuGO)ro6{b>{ZirYGAo9JkB=r=R9<2XUiQM-tII2yL$QS? zCh7L>^H;8j*#G;X{OR*&!`xdYHJ?tZOBkha+_`&KP+ngD)d#DolO{FIdZoqCm9jjq2b}}^Xvaff|{*My{8-G-?IUoGGS?Hxna|$L)&t1yU0G0 z{`Tf(^TlV^CQJ}`ke|&gJYfpc6V~z@U*i7Q>THNm*znUra6_r~8uQ$yV>1l*?$Q&? z&oL7an$&)Fw!D-7d!4!;id@0V`5bHh{I2+xBl_*_Y?kb7-N1HF4n@%MKhmJJOHZCW zS+IOLdu3&%g_V_(we{@hmbNxF21!RaK$~6Oy?bY1WCS{rLhrze-P0#eZhm=rxpQQs zq?VS}hK(B?ot&85lhu7@Fv!ZzHLqJ6x!LVRVE42eQ!gx8vgE+!%fg^D`4|$;&NBV* z@#Db`L1hL8`I--mLPA0xzPt<$Y`a;#Y7@iNhfK5kA`iP*8Ou)YQRmD#H*d+$p9}vy z_1;tZHEaD^&m-Z{($WVH?)>o8w{?EJmWiq8gJ)??D^`>n=FI3?aag%UV569bNK4`4 zV-GJZbT%+C0iC&GmsI~bJzale_4mArsw&Xxm$PTjg7$`i`Vr;#Yr{F> z9o=(tb7vSPvz3&T2*}9rNJ>h+xxJnL@^XLourRTZkX`@F8&9Sr{rT~+ps?`ehkqLq z54T8eJJA`-w7>RunTUwUgA)^#K?@BjQyocDaDwQi+i3z9T8ynLsA_qfjG z$OI2V7PIv7S*uqIZpf9sx2vdi*EybohYwqK)L2ShU$?hq-#(+57&k?Y6THgqt2(Vr zoH!nO#m34WI&>%?DyoZ9Sgqk;Lc`g#;9wV5*Mo--GwX=0 zKD^g#4hI)k)1pO6*Vb0o-rn8Q!xIx53)&z%ZJL;Y#G$j||9-vJPf1OEcy6w>fpK-L zUd_`}q8S+(p!2q}udjPs$j8miz32bG-%h>3cRFI3-oJdwnVg&)*nV*Gf&~f&-Q29z z9ia!TKm6hjg1v_IkI!MdHx~={okdD>lcKibLupvZ@#%> ze#QRlLKSH-GI6o{`(EC!y{`RQ@MA#i-Jbb%U9D^1%Fi%9&VKf6?vBD_K_Q`g$Hn7) zmOPm&a4CK3wr!v@XD(d3<`xkl!NtXOAjQZq?~X;^vFPaN@~HKHzpwupbH`6kRJ8T# z>hQxCE(jQ>ooQ%qXI~#5wmbLsw!~9YG!r&P?5Oyd)PKIZqN3#Y*B38dDCp^}yKU*^ z<+Whx*JqLHy1Kd|A|eGM-=}Ja8&rNu+4J>U^p8i~`V(f)K7Db=KA$&b4`$Dveev40 zZ^wSWdi5&7Xy)Eek7eR2D=HKohHgv9Pg;A5sjc{*_%7>>l^X-5h9529efYnFpMlB# zk3jJLe^Q&8H4xKWvxZ^;XKbqq|;TTU$FYDvB#JGgC!H1#}SItXZ>U`rrG6hKfe$h#fk7 z7_=lW>FTP`yLRv2yy>~P*uDIB&%%X?+viW8KD|6jZ|#Bw4SV+NkxP!-Q(+hq60%^$ zijF&XVnFA{#KpyN@bkA%oEX^u__x+Z&j;`C>};MkO>D}PDGEkLLPq~rOwY^8I&^h) zcw&CO{Jx!^Y_Ze;MDfha#rE1QurH=CXDleN_49&CSgRQ;c^1xpU}H)9Y`&B#uXw?Dk&2 zc5Uy43m44q>1%60ei^V~-#$AXUEPnLo_eo4{!KM$@`347rZ6y=<=^W8E#Wvf$5N@U zqnc^|iIw|U5;PcjSobZ@%E>&k`AqtZL?dU0#!~%PKMG&?&t%%`x%c|2NgVMhDT3$b zb~mrj*E-gJ{ot-rv4|}hDiS=u)OrPs46uw$UA%DN!qexkUhTR26FfF`;o`;2`t?hf zvZkh{1_T7W*eLpVe`t8PvZ<-)=VxbMf7_`Uyv!joa_8;zf0DuJZ{EBCo!0#1`E%#^ zc=-db?|y&rB10#B-=4oamn~BZ2?=p+1^|;OY|9-W9ujz3^<7fBEy~ z&0ECRnEw0QTj!t{kq8||)elTI2Y%^%mON8(c7e+2-~HDt0?(%?y*k3VrmI8XmDQ5+ zEn7A`cs;vISbfoi`SIPo(rX2zf6IOO((?PhpkhnM;>yp@9K*xKLA}O(wZ9W`a(LwB zi^aB z&yDf&_I~*GZLjBKHAQW0?&W@Sv+OtAmNhos%y&1r;^CV&Ji5BNIX5;irk|U`*nIH7 zart^4P0f{jrawR@nRj<{`^~fITpPWeiJ_*p7Brl{=l8qa2Il7OnVFj3-rw(EwMuJE z{Qi0CcO01;q4FU!Gn0dZ<3Jm)G^p+t5f?B2HD}HonP=zb-adV?@Z9a&(woI~1n($@ zF>af{vQOWk0X)`%) zotUT$s?x7qy~-6~9vo>LMzmke~4-dCrxNzY?h5E1G@AtchgorR4IBGCpP(7ENHvx03ZJ}kKWyri^r;>?*hPhac|2wisI z)qVNpcE_egMza`&hihHF{PEMP(3%ggrUqPBJajN=W8v>IHov)5jXNyVKoulAf6U5l za|N9KCBC|{QbR|_B`Zto%a<=Z^!y)QU%&q!m%hIKljqMDuUf_B=H`}PQkb~;CI=7C zkzZe5E2^tse>?|enCwRK&F%$}QBg{^wz5Be{>;eCe7U9g?4_mN_jjbHUs~en;p^*~ znVDH_UtO4Qsi%=N@xbmKJGOkcd)wGA;_nEgMayia(9H06%{73&v>BQgP z52xKWJ5gAWHK(J0*DkR?pS*4S=2S4|=CZ!IVc3^-n^UoN`c=1u`iiQmtii#-3)f%1 z`>XzaSh<>-8r#&VQ*Ug^6b}Dfbop42#J_co&!@Guv6+~#T}zuB@rV0tg294StF)%< zT)b$}gC|c|goTB5Ksj?mPI*mj?Za2ExQvaBYkoXzck1j`X3|>Nd9L%=hJ%Lv-6YKp+jK@u3l}KRPMy_^6;lm zpEgu~&*PD`3c0dSKvA$;_Q&S*^F>$Qxrc^|vh&G2sJQp)RhEU7)uS65lQ(SNe*EHM zckrBBYip_HGtjK!&CTf>%ic!4xx4#&ul)6r_|3iQd>$pGu%sUa4{MlxITV+C*NxdBz%8!#ke^Q*IHs)VO6!#FC~K@1&2*%YJ-FTzKa9 ztE<{GX3yTfKP)7qW#K}_pr9Zt-v_m|wTWqIZA+G@fEMU9v-2O@{eB;JZf@?vBiGmd zN^$q?G+qZ79xw}s@??%ppUthy5YAj@O zb9HLI-E`53PGic<)S3u7YUkIgy1(l!CZBBivwxD8sOVI^e8zata_E>5ZM1da}xJt!-zzKl91NoMSFBKIa&SZAKEnkd-U7v2pzL^ zakZS>-P{&sIzsXFwyYaBzE3{db#clb(B7%qIT3FT*jIjHS?)LY(9_e?cdu=KzKty| zFz{oq^!Zn>U+>QOdF959j-}qyA6;1J3|{;i5giRW&Qsbf=S4|Re?PyMxA*P%=TB3L zLe1|lon_qYetg`|H^a6%;yg3xz^zNqJ6xIU%irDkCLP8a$^ZV* zqbBEeK1Eww*<;6!efa#jdDbkcWBu~{3>_UEptkIuJ$n``S<=$VE&k}i!RC(c?&hUS zRfU9wZ_j_(wR*Mon>TN6#oymoE-(6YX{_D(ji4aeUbo`^7nQf1Wft!q*w6EGsrzrc z#yo%7Ib)?OSFW(>ueXq~{KS)%_Ugym?LTK&P5u8r4|Fz;(!L`~jqiPOb9If3j1)9A zI|CQHIl8s|K0N2xv11lBKMZnmauzIK-o9#;R?OZi(MglmXEziV7lW$A%ggNKSYV+UA{#gFfKhgS**d(DQ`z;b*5A#cG zt}?y5>(=QTIR}obv;O|p>KGo*IbC1>z!c3bkNrSn9x9+ApS!z6>+0%0eE0x5M(9S4 z8K|~1PCvI`<3>Ss|9MZU{30VGdF0RiZ1vz_TYTAU^4?Wu`~lC_v&BVxeSh}q)eif5 zxz&pov)Y-zymh$!=8q?n-6u?$vOucbi9<1kL3lTdoq>Ts^!B`?*VabgzCYWdQ0dCm zs~<1A%Rl__@o|E|kc3kacAoW3=bzV}tJnE2^!6p^ zVpi@2OZ=_(?^U$g#WKJCpG0Kj)gRw(XM&o6|2{UWIDvd)kTm_k>({Rj-?;Ik_xp6c z*sim)%@^<6C%0aym3|)}$l%U3gO)rsy1auy?kv_G;0I zaA;%CoTj)~|2IMv<>loudnyD$o#GF5Sy@^>K0ZgxD%l$%H>WuUM~i2!pY(IK2ZOH4 z<4=zgR^)Mr{ybNG@AIptQ?)N_+t~Q)#YLvM)BpJA=5p`*_e-flix~%T|_4D~H zEjRvN?Zu(!WLVRoSM;g7+E!7iB|dF2Pj#;D#uHqiCbhc%ye<3tdV5=U?zCL8^uM^= z_h$s*Q4thPZ|8_YViwBp+w7)32RBb^II})0_e=Gm!KMIb=X>=QVu52 zEiEeQM;gvP`z)}U!Rms|`KrFR-){fxejLBZ#>SxTx?bZs%L`MdTuFX^FW}DJ*`15s z(+`|I8*)Wa5LDuw>2ziKpRXgvEh#CvV(r?uAMBbB9++X+w10|6fRB&Qf;Ee}x;`2G zQ(JYGy(Fhn?%st<4LoUV$6j#1`@YJ^R~hb1a3Mnc3$hJUw;M z!zYGWR8;V;CFm}u33je;gnm4El44N%v*0r^@frhC*oK&Cxp@choe#qqG*A=gwSmV(nueO85?(sR<6}=LT z2bYD+KfC(%_4tE#{)8Jy1bO(yb&G1R;8h1zuNBH=oHgFw+$kw33d+jNva+&!s=jhD zfGXBCYji?FLOLuCt^4`ohl0MkaE{sR@19Yw8n(GP#La!KIWL{FjNR_uY3^z7-Z9P2 zSJ2d2b@kg9Ey8{ceBKWhl_W1b}}@~G)@Oig@M*~ zFJG<>irZz&)E;r{o;C?G{#v8*p=R3oD`r=f)+_NZE@j<(IC}Q{{-zHFJw=6rCu*2a z=I>WMbn2CPkL2RU7cZ{PFlya@?;j{NDmF;SCH;NS%zxp^6&8jc&t~Tv6h3m1kd$-` z4i0|fodFs>eV`s#AtiL;w@S^l^LtLzF|Jk&n=nP-%=fg7_J3P0o}TU;<>#mHnV03} z&8r3F`}x&2%YA>p`_L(`U`R4uA}_d`rS9&o(zpMsZ)`|BaT>HjQ|4HYBy(hBq@de1 z@2t;1ceRF2V2`+|BPOI5b70c#?W{)k9X_1a|M=s}<>NOtCd=6Uy&`t$Qqp&4Jy6N^ zr7&swf&Xi_Z4;A}l$g#{C8d=%SmoEh= zeEyo=+FBa1|DOELou(B(3MAj|0<~RSGLGa`Z`ig?40Jidl`B^gQd3#Exw%)YSdsAk z-QBlKP49Gcbu~?%EbQasv!Ui^(Ud7uN`CLzyxADkWqTMN5+dTB&C1H!7#VZozT&lA zN)CbT&mR_67H*JHn$cqY?@wh!&4)&ZXRprJ)CMQ!{*^v+)>J@pXBVhBt=Pgb^~T!+ z`M7JFiL0%C;Av0)`}^CX?vKTnFJErmm$oX=aDRPwPo*$xD7w4c{?Ogsk~<0?=UOfC0#(Fuie;QN z2?+|@^6qx6jo!X(zj@&!mldm5KVIB#cj)8e;|CKAEM}d)eqDUovSksw%XAq)1GfRe z!Ol@pQf@sG7oS?Nv$M~bF{40scY8a#P+aQg@{XdYt6#P&R`5&^(g#I!$DA8eFT6mm!rI!{ zu3W!fY;%2e`1*vrynFwm0s{rx+S)ukJztj1*}mQU++6E+b^mzJVVF2L=lA^76{wTfKgLyO(*Y;{U(z>u>)r4-6FK;pG*S zmF+Eje5~}>pNEIrC(fRI`=6DiB3q8xdQN-k3=P&NrWI1M^TqqmZZ`Y8svi9w^VhYcgmaqiZcg{(iJ*y%Cr^()TF(b6-Pja1o^Vq0pU0!S_WxTeXgxP| z>dsl=?(Xc0ii&U7N9u@yCWKNr(sQLsOG*qXJ|s+;Hm&UE8PLi4M~)pUtMHEt>|AYe z+jI)E(WwTNeA72gw;KKT)kuEUk9$%*@86^4^OH8#*Gt&grYE1AG;tAMJE*{8hE+0fi;P7GQxVX50pdhE17@1kKW*H@$U3+2c=EvFd{w>(IkM-TV?}FmTT{2#9^+*_cKnkvw4tJ*eGaDKhjvPI@aOY0R zw6wGt=J|2$lcfA4q@^E!czAfj#*K~h=E<#EwW{Fjt56TGeR_Y-pFP{UeY?5ed^=uM zRn;j|rzXC)d8vL;_Zf2 z$raJxQLy2Wr`0EZ)fEe zdvI~FJLmwlIdf!Y_^5$KP2bcoP2}c)xVUrv zKmM%LXM9rm#$odDdUh$Z?$+t|?iGCf{ycl$zIW^Q8*NNG8-HVWxsX}@HnCC*a7`iG z5i34Rf8P(LrAwD`@bkO7y0Uh4cY{u1Q*>^7(EP7XdqqdI$1}Ssmdeu7j0lcpqN(wR z)0pGy|BAeO_x<7X?H!PEuS0d??Z)rlzaM`-zrL?iSbf|6^t`-2W_G@WUteBkWMot< zHeIq~!?ta1IXOD-+arGJEQ~ZPWX*s5Z~yf0^+{j2{ylrKIx9PRL(R|JkZ^NFqffCJ z+1k*y#00<2yL>hAV#31A$A5M!YMxB~?P@3V<4BXszOo0AYu9@0Eo5GHdirM@_xR9= zi1wG4*E__=b2c{SLHe>TYdT|@-amQL@_zq+IYB|ejO=XY*=OCHoR~m^d6LFy9dF<5 zcDVAntTWiJl20U6)G%V=Zo8lVr~G}uc*U)+MQeIG&#ztL`dx|X<(zqW%PgwP%$6)s zagh}Q#hAzTBkNk8&CcIJ5f|gOY2sl|Nm2vJ_v`DF`xtaBn+otmmH@2v)G~i6zm1d)V`__$)FSoZFKK}i_ za^B+gmQ^M~>i%wr@84%lKAzQWB?B&H`Z{CX{#A6i>mHMF#ZN+oP8D?TWk(K+rIG^yPxD~$U>4EKqZg|;Ru6*!Z>RO&DE z{P^+UiuzcOtMaDi+Y_&@vgY7Eef;t9_W|H`+5|h#H{hF=Z0i0*TuJ+1*2 zw;x>IcxCYL@PM)eGdtgbQ>RuPPA@7dnqghOu0u)KNbYp{C+*J*6&5p?vc4;S$EaYf zz#t_i_IFo}n)!A%KR>$}*4G8x`_Dajs}4CXImzjb&<|#IKG6J3eC^k(((_-wdbMc5 zf(753U-9m_w*R^Mr>l+6ruOr@>BgS=Tv0fEMnqTT=XJ@~*L}RPF?r64!=UKrcsTop z>W6>-{(*+Wt;^rJPex@_pe-OIdQ^c$;SAAgi%a7CM zfHL9Mz{LxeEI)p^qVU_7Ohz%C9gXwr=Q*FW2AT6qbff2k`8JhIva+(EwM0)&Oe`oV zaY;>Gy5jJoQ)?nOFIc&jn{%E}g_^?s-PRvoZqHBtv8U3eS2X?L!JQFXPVkHCpF4g# zzh3}aG%%@(an?jfONXtEVr6G%cX4%n2s)WRE>6zw@0Z}f_G{HYZZtkOZ9KoDnBDF3 z^Uo$>F?V-PZcII$_wd%%)`B7<5tu>hVx}KXo;(R^B$kwzgoK7NGN}8{JF+SD^oPs- z_8(2nXPiJrV`3 zpAKENbm7irY*E*)#q^7Yo98b}{##XlXV+E+1cCG-!mlS z=JuXCZ=i9gM-*12E(xnB97B!`xpO<)UjwPs-_2kK}eJ9iv6d2U~ z<}^&4C>Z|wZ|%fj*GkFn2hFB27d7vc`n2kYs9R?LqdHv%$@2GyvJSJ&JJvP(zyX;x zakb*+`Fh80Y`g`nWnESrNn)2{*tBVrg1Y+kf3M$fni{y+ZR>vXnjZ!0p4EJKz?gP! z4yUN7DEJiRl$4YYZ*FeZJFcRp2D-x#G?uk#lTrBVojZ0UbQ~Q=Nj#5-1&Yo6WF4L3LMl+(^*VlIC0tc=^v?%bBopf1@2Mn|2p2fDhtA5ZJ= z|MFu_QxjA8XE9OGdb8xnF35Vb-8J`)9%U8Rk2|s<@$inQZv7mw3n8p03d6JiulgaH zHuK!0s-17z`4<`|GNtVJ!{&PD&)hxL)%r)aWIBTuAc9u0trzHKiHnbyf4~3#z5~y5 zb8=dGdVJcyFIl?u;+;EpUVc7z?i{Fvk&~OtD(Ag@mKLLAs)JM4>cl zt+P%0X4y#u-C29Ir@L9Dx$$7kmdhgQCr_r%u>WsW_wOcW@iPf%u9y&aeSP_Z`*pu_ zH$>>HiQg|5zCP~gr>CbkCLQH^@!|yo!=Jx@4XeIngoK1JIJ7%&0bNTnWeQ94!G#M&(2FsneCO9TuOhWtw03J#YS+`t>U_kNx?1ePiKb(Xe$-)_%7I6?q=@7uI`c zG+ZzJz|JT0;)^k8R^;o|@K}(Eizh7lHNDMfUe$sAi_(X$&RDieYl@3|@{2PwV|s#y-RE?cirz?I~CQ+9SYqb>z2%4$P(9JV`GzGdX7(MQp~??MU@>}7cONyBc;Z} zR(##b@bmipzpgM|`~T;;i2OnI;BEew#p_XZSdqi+|aN?3o7EjJ| zlW$#WVKER9U1&Au_r8yd9z37kCSP9zZea#J+N28}=kTz11Xw(HrPCWYP{8V>xxzD4+(5ll<61z{_Fev`ab7`1ip1~wcJ5LS6@8coa-~vF*y$g+GpRzwn=ZEW5=?R4}k(Z?&_a*fyqBt2V)W_6Fp$ zYuB!I^!B#yStRtld56t`Sy6Mk0&mT^e_)ol5Yybk#|Hue9@s343knM255GR!qW&JI zvKx;OG_}<-O})So;N!z1^IZSgI|1$Kx+<5wcD#0&EG(cf?QVKhbY#S~H)7Y;7#@$# zmxMMKC)hO$RRm`1JYUz+_H$QDTd<|0W75n6^?wQtL_{TT?62Rn!WopMI9>*8G>UI^ zdsqIzQg>nIniUSNSz0CPeosuT7XEnLuX1PSB^Os+2;95Ha0S%qM`=I#)o&6zBb61AnPU@~KNb_b;KFu`tR{QCpHfByz; zsub6YX=rI-d3I(dv$L}^Xs^YED_3eB|15lbOwr0}*WuS6A0J=5awX@cO}6jFY5n%c6<&n5qBn4Ua+`Y>q5wdko=-=uN|14F~cOdznEU`q@t?&)y=jlJ3G65?zeL}x3}@~^74WjILG?s z`*-cyr8nQ#)6>z%$LIHY(3;YmbInf{vDvLv;Z@#h>GPnu$)Mz#&bh||lXmSA(~141 z&L=;QO+9;`I&$=A>CZW{XG`bg zD zoc#Rw7$(e^(b3k%#v^UE=CrAgkB`-!b0^L?WlOhn)+DnktUmVf`eaas@he0&_^;=W(~k_9LboqkQOn|r{2u9fKJWxj`}Xa*;wr?*#s zfA{e9`u%N9O-u|Aj&_TKmI}ng#)1~J#K*_i{C>NAhE1i>lP6CK-ruvW`Fb_{!sXYy zau;vkUfzCvv$)Q|%M%>VF+ExIZ|}mTjG?@t7ecST{dhCR@J8+VbL);>Tg$kkIGuCK zlq1XeA(d$S_4UFP3_Gg6YRTDFwX9jA1DdiE6Z^0I6tw)asi|qfs#RPJpu>=4WMx4^ z1J9nNy}7$v{MoZ-hq%{mWSa0ehuyAuCZjX2bKgAC(w{utM~|JFTK?hV@yCXVPUoL` zfpc(6@n5^f=~Jd0S)(^8(%07)bd=iR>S@!aZP@Z=sohiGIqDx?o+;@&mELgO`a@au zw-3US@qKc=Ej>LVW$(9%M)H77`5U_5|3UTTo14=oPMpPKHv6!iN$*pc>j#RX{>M$7 z$QTwaeZ{Tl+FG{@Lc-pKUtSd3)bHaGirI2l9jtrK%j>ZjN8*xM70yTU)>L^~xo_X_ zjD@{>P0g~Ut*uvAzkg`|e*q21`nJZ!&IVbMvH;X*sHv%$Fn#jLpNe68vR|t1f1z#-?JtrUYKvxx_K+B ziiwGQ{lA%QKYo0#E{%oM;az19SToMgvz5rrviP@ErDNsCMH2h} z2=(vS@x3|~blX#lz$dA<2e<{oO+V;$XK2MnYAS)e436{1+|uE_mj{b8gN|-7i}~0pfIGwnn4)RJU_NKYA|lNMx48 z+Xer5#L6Zq?Hm>w8gQ|6)za2h)9iPk1juM>tGaL<=!{tbCo6Z(Ju3<#oF<<<^JeG2 zzaNu%W}5j1Oe}qQJ70Oh;>8`N*=Jh!iGiK?GG@R31C#|rGODVov39d3Pi_XSx;=D= z>GARY;|H7BL3=hoMx~~vX5?i(d6USeUwBI6?aqI;??J}f&D~sDIb~8%AE@bA{CrN! zF7OC4$IH0=eh*f!Uj6XJ3l4L0^B=!|JIBV#c8lx3`}A|p92rn$0;(#PFIS&uQ`z+Q z_xIvG^JdSMKIF`NFlp=8KL+ilA0*H8yeofjGv`TrD`zcx-Ro-%Z*H4&I=7d_c0+E2 zYFQtz{$by~eFmncM{jM-PRz*Y03E$-WF(ZCnK{?azVuayj9rby<72(eYuD<6wgt!R zD(QUuRnD%a<0ao`MNQ4CpAXNucHsMj1Jl)192~v5xuT+Ej-On+Iy`>SmMx6Y+iq~= z@`BQ}z@eFSa}VsV`pWg}+5gqo5leY2q~wK#n-@B_bE#YSWk2vX-feqimiCih-)GHA ztNBxCaBj{_UQJETg=-<1%Hs0+{G?Q)nG>eJuedm&tBY%fPg;L+aBwha7Pz9Sic8&s zFYAGHv{YbNI9sjhU%mM!tN%zG;}++#+ErHlttIJSjq;6~FS%f@+F3XEfVP&_qJ;|= z9E{kz=WSlc+&W7aUd^>jSD*OHB=H_&3nUb>}zHGD4o^LY@D5a^qL2EYn4ouj$+Bfh z@9ylpu`O4+?A@K4kEPPj&vVVm$!Y)oMAY)d#B+|EzHFO+%YB%dnK>cJU_nyCh0j$n zS=q^l@BX#xlby|KYHHbd9ukigm)8qdh>MHMSe0$ojWn0yMe#Fyc`e|bZBq&_X+do^P8KS@7TF>>-pkuZz6MUY*={N)GY7L zjfbTXDKcH%T-AJi%|f&0SzUP2-s)KY>B+q7kAx;i_UG^KJ@EMWdybksNFthFcej;| z0d&u)+T_ma@9!2aSioSMb|&NhnWINpbIhb)y?Vvauzue!t{k)9z45WC?`twwz4<7R z?LXb(DahbcB988D|Fhqpd%S4fxBrd%B_dM}E-t$cvc$DBF*853$&gT))v-I(qn#YnN?Nl zgMG6;RwpU9^wfJ3&BpiIucM#uY~mJAxVv4yM`zZD11r>aRD3j3Qd;-9b2Z2hN(Tfh zWTQ5vaO%zd&+L@k9dY_;!_8pcxJv;{^NW9(?Ap0AQ)-!%BZHWZMO*1>x5KASxv1v~ z2?`2cj0gF{caDW%*tZ_%3=LcQ z`#1aDQU=ATOE@*|1?`SWFA)jkh%Txt2xa28dFbL)<&sw{<*tb zG-BT$6SI7|<)zUew_Y)tap1MHvhoMZqm~RB5J=Qfh4GmwcYi9ZPzTTd-{{O@c+up5!I;IHh znBa_8cN^UVCJ2i!|H@Gl5@MBiPv_vFR_85Q?H~t4$q84;&a$t!tFq+Hs1VE!)l@KK zv%0cBH95=iZg9qv@O29ohj0}~NB1U&XiWL>{&Bn)cTAmn?}O4ccHZ|6#h=glmb|{id#vr)D|Hse?MX=&lHc4&JNjkEQtxDg z@^{8BuAh&3YzFeK$NpO-O!KEsZSA-F#Q`dN-Q3tf!_=T_Z-sO6^Yg#FxX4`o{$6fb zJ?M_?@F=DQjV$|O?mcjx^D6p4)$dEHGwi;KoY`HLTNcAGVZwy&$?BUo)a+dC_O-L4 zqhm#B#%0bw3!U3RJ*T?AzZe-nhavBb>EjmHyAqv#e_w6IhX;*re_2^r5*ki#HZaI| zaQoH?ky%sz?Akuzj8&ZspZ>lTfiX=CI&n2Z+1Ga+zH`T8G1%Q;lWWS#%w%L_LXNk! zwQbnG-90R9+P|i(CyIWaKRqQblsc^a>t8kU0TZB)!lvdl$W=6Vsh|*j*4R4$W1ISU%p)R*!%hamIWc#;ulWT zG`aq1-NB`^yQ3oC$=5r)dc%|KeLC&9xI_h;u-ccF)vIGSzXnBd;OooFgnz{Cty0v{ z@hOc73~W4e#>c|)YMsZVWq$K)I=!dst(-b@R`iwlhX?0YiEm81d$y^ylXcgO(m?&| z1;5U0&2Ihi@%ZW;MMt;aEQJJo*5%-gJ$v^~oH3(g!v+J;X5go%rb<|qtjG$?PDxS8 z$;}N630bmg^6c5&Jv}@O2i8V!FL-@zE!%GnE-oh*mzG!AA2tL^=_l=-RlW7v3+oT{ zpYIOZb+F=U1y1a67avU5S4Ix@b8=2W(y-hwd!!Yak?Ct+Mwp>~A zt2rw{@b%R>w>WFA?yc6?Qzcrq?(FShomcC z-pW7yR8;flqo#}7KF-b-?Ql?#-I`=(+q!J2sF>KIRht(5<37dBI9boZHaKV9leos> z@bs;lzO2x&*!QPs^P`AOPgK&*$#f(hPC2{E9ps#~@w4R{^F8m~yZ7Vqm&_7_HR)US z{PEix?ZMU5uw>7YsA!L6?yiYH?*G5{L}JmROA{wd=st4frtdmukmg4R1uJBK{r!I5 zu=Yn9%ssULPwa-6RAZdP#Ix&uwD`;%W^o1Tz$ z>UcQS?z_7t1?8@1O){Jx5mjV%k|`a!x$gWWM6S_ zkDBS+Nk!tfx5XZNdV2E~K5!KjrQdg8`w};|2lDg(uhYcplMp@7InJ<*@eAj@N}1`_6x!@aO)&4_8xDJ^H(x_OA?3-0wnRd(!hARyv-kL;}&iV5Byu^oZw|ULPrK`Djm#IGb{XYI;<_u7r zT-jyVcwG_ELiu*GYT5ZIQ>H(tI#|k6EWyU0p|9ieZl>`I+rp&1e?`Q@lb)Sfd}C)Z zQ;L!C+@t;=Bi70bSIBbl@U(nhkT}8PRfJE}43>!R>qBMci}gS3JDix4!NcHjZ@2i~ zxO!Q)v{LnFrlw5Ge1D7P@4YI%e$S=gDzns#XkP$ z`_R{QA4_31|`0V<3?1;Xx{XK7n9l}En4z5VeZyZnO} z7Z>l!+_H>o$8^?`cWc9He&5TDIk}VRdfd7Og$HkTl}h}4xxCa&Q0S9<&F{CYE^hle z{pR+R3X6m7?_0Q!IV1PimzT|V?!=V5zb6~LEvIoh_;R@0OLk>nTjO|X>VF4;c@amV zYGgN*FsQg?9lbC2U+nU{*=)ta#dkV-S`v@3X`;|zGVD4 zxds%%SIP=m{ux$(d*hgvrj~bSN8^?)CU0(RWd8r>xqVLCKa&&z^$Z9w>c)<)2|< zV&aC)o1M4k-DO|^bubMK4$QNyo)uDmYKrEIdyCb1c;(}Tn z`uiury2j#HMb*FUr|xq3%&Xz}_;Kft$Nk%9?g7Q7AcNY6EG{mtgw&<;G^C}aA0O+L zzGeF7h}a~qrA&^;n?9Uu@h?cctaf63%)##HZ44C_ul5zEE6tf(zA#*0TgLhstF(0R z+h6LSoNU%y{6Ic9G?Z0Y`D^7XHa4~uD^^_CbMeXi#xuzWPSi6n6m=Cp_`X>F*KLc1 zDSy9vSl38ge*7pPDzD*#thj(w73Z{R$2z)ZHKot5jha0jT$JSs2>&=<^70bv_Wb){ z+N;;CYin+HZZ4fSM_GTOhry|@KaYE@XR zLr2F7QOWJoas?}PieagSn zRvjy4bcmbK{pokA)OCGLEf>$gg~z_GUad8;UOV{luhgZgC-%+kQmSk`mMe0SJ0L7- zQ7F%?FY&>P9rBiy1+V{k;9TCV7{wYRk)|oi<0)gO@KgU0hr;V(OosntJHeRBh9B^&cO(CVqHuQ0h8AC#N6-$LD8f zFYoBB{QQhlQBg7K=mOvWm6erEK5CbD>{H-4^x$Cg)_wh3c1~APQeyG<_wRje-{mNM z>)z>G`}*h2o5#ekHfh4i6sNejdB?tP-8+42t^C%#)0LH!SQsF_XMBi}q?Ti$90hS$@6zI-n1qCI)mtgiC=wc?hRmJ(Ja8ix)YO31nM zgX}b!C=PPu7%xy zC@^te&9A3s40D*{y+Jn&3kxrPZ_oh(uZ~!L0Oe{Ir9+w~5XOfLE?)NspyIp3rG?W5 zlr<-I7&L;Czmkxk8caFMJdl15ml+3MM-&zsPMSRVt1R2rVy;%E?Rj^de0_WOISX!m z^e8DMJ^k}<4;PoUT*4Kyfm%}~>}o95tX=!?(Ickd;NT<2j=i$h2@KK@DJU*Jys!56 z7uhb2wNYESrcIkx@owjH&?x)P;^#(;xy!o6^$(pq$@%TuH_!pFiRtO>&FuWItaUC{ zeR#kKYSfh9t8~A=u){AWN5`t{&5CcSSy`*zZ|LwiKjXmb6RSd37reZrx@7rs=Y;_Y z7Zy0quqs`(@37F^t=ZR|)Fvz1*~Q&o*fDMMX5*lspb4{Qcb}fF|M<$v;F^|NV@XNL z#Lv&pYUt{^mX(=>t&8boGZg!#zsbl14oXq*j9bHP#p4TOU1_|3oENfZ@1sS zR<5x~b)v_GoyF-_r%#%mozmuPnhPJmA$xH znT%%gxVpM}cz9eWw^&s4<3nOgYwN@3^XuDO4#k_!Dk>>Cay`DDS6^SBN6to~v9WQ^ zIae2hE9DHitt(e*%Gp#bu+r1hV`KR8>Z*6VVxYAe2a}jyOvjfmB`)snpa$|UKF=w~ z`eeH|CLe$F?Ck7XaAgCMQWr$qn1LKj$bi_L*hESy@^6~wp-JEvz(9v%3hwtBm_DqAen&|2I-B0X1_wMd)&`O~Lr%rMG z{{H^>zrVjX=HItFkz!Qat|m2Y+B6M)ebB7il~eWq|CUQgecE3WY+-Gk{PJz zl}BD&Tnrjut!-D$;^X5pFf+SWF0ttH-sE+Oep2g{-HK&ykOhk25l~wY5#~ zT3S$C+`M;hZTFY|KcCN6*4AEq^gCmJM@NH;QseUF>1&HcMMZDyD%Fmwerx*WvZ^hZ{IB%Q zu`Fiup04K_5+YLf^Qrinh>c8reSJ4JBszD0iI0frxV=4pyGMM#x2Na9H#av2hK7c| zj!8*T0qv)Wh>XmY+&~R~ge+)WPWMdL5=mxv1mz(9o0|Ogp&6?$Qd(Da!86RpgGc%i?vpPCdR#q0?;}7{ZMZk6?U(0Oa8`MnC}CItm+>*&yD@89?9#qK(A<%-C$ zW5+->*rUgfL!a}@STv;1t7Nk-e+N1!Nk>QL!ONGOM~=8`-L^gdejn(@rc9IlFi402PkU zo;?GtUFeZCzA`B_KR)K;#<#Ka%B@BeGFtNpcL*DfhLJG+S8WouvUy16-haqx0K z17qXni4z6y+`W5s-ZdVZnyhvE_uJ>>(!MOZR-TZl(@Wn|MK~DQhIuNt2Q|{vpqb}$b91D$%9{CUpK7zQLyLd zv)QXAKH0R%C}w97D?7j3kv>`L56|bOJwB1qeofQ z{pNrg%PL!D|7Kud=k|1Q3=t3)Z}*K=;WQ840PXs;=4uy8hwH6%k=| zKNbcL6`?aTjoF`{n|t`}?d^qseiW*xs3crn6}rmm=g*&@1If1K-fjbB(~FB-CwQoA zUA7x^qnDNzS7l}8j-sbrOM*1h&dpgV7915N^`yvBNl6K`R~=N2)zy8qpM3cCZRyC! z$d0Zqr@A`3wDa>oCBBG=h{=yzogFK3A1Z|{DqFT`lhDC~2Uo0H=a!YF1!~hwm>?h_ zA+ciJOtW06hW5`}xVgDM9^%$d`2Fqej?&lDvJS3Zx>U7K#&XfB&kx(>AKfj#-x{g-=chZng5CWt7SVs&|^%`9a11fx|D2Q9wIiLv*}c!~U(PMR$H;KvX;DZ>$bqX@ zMHv|xSFBv=*v==*z`)GTcVt^Gzx=6(@80pXIyG7rKXcHVe)!lix3znVpPy5-vXVM^ z@?=3#5z~hc`l<&H9_;Ar3;QeD*wJyzPVIxs+a9Nd2UZ3z4+su!R(9`ua9V%=ktv$N zSJriQb{>3mw0q*5IXuZ1%Y?(-g$U=1?~R!ai3M`tB}>YD?@I*cogC7?H&5)?d#Xw zZ{Fk_Id*K7>R(e+(}!?k0Ua*%G%f z;L7Y3OrV9j4Y#@jPMV8fPg^5jvYJFj!vF3g+*Uqzvlbh@{0F+zbj1i0G%Y=BWu0wU{z~t zE5oaQ6OvL=Sd5L0Ra8~4R_$H3Y}wha{*I0#y~PhYZ*BCq|0{Cu-aXLzk9G0;`51Q8 z{4`p%diBSL?ed3i+>l_HwMF>sXS%rjz zKwEo!B}`O`vjTUybBk>+-PQRae*r1-J6cG^%Gk2jywdp<`RG z$2mJWF~!8jCT3@MAMF-TesyK#i4!LdEc2Z`>+ZWfm7h1HoD`ZdW5$E4;qk5|B_{j+ z|Eu2f=hJBhhV1O@J^%mxj@Vmedg|0EgMtSREbQ!uFI^IPzxVsRb@6Hq?ZG8`_U_%7 zc$n?U)2E65|NYH+uI@jtC-d^MhqLqdIrhuhf%2Wo>wbARyg^Wy^@c($+h_bM@#`foSW4NTVjU0ivfff3Z?T;@N&Pk-MJCT4a% zm#8SIZ}0E(%gf9A%(dEDd7no~Nk|uzS32g-oqKDF;Dd*U&USQgoS9|H4Z4VciJ4hY zPOc9$^H*0_2O5HHYHHe0_}J}g2yb-s?WngU@9s#-$;qv{_<)sLY{8Z-BG%>aj=a3Q z{NdB5pd+$Yzct^Vc$n?RjT;I&Iy|5jcWEiOQVY&l5~OKkV{^srWUA53TO5`QC9kio zJ?Z&vj%6`uRT8JL+6u8|yHCGfuTKVD(6}j;TZD@hbhdlx>uW2;?lJMZAFBTTE_U_Z zgU#%#Pc047JaqW5pomCI{omK|61G()pwnBn9zE38*Z1MWhXeZi|1`C&sI`BuGkak*k9p%cA5l%b*Y^sD>3dO)4I zjxVn->&w53Io3HD-11U7gy`gf2U0pYgeyReFeSl6Ch%~Zijog0Jw=)t($@d) + + + + + + + + + + + + + + + + + + + + + +0 +1 +2 +3 +4 +5 +0 + +0 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.8 +0.9 +1 +1.1 +0 + +Probability + +Random Variable + + + + + + + + + + + + + +α = 1, β = 1 +α = 2, β = 1 +α = 3, β = 2 +α = 3, β = 0.5 + +Inverse Gamma Distribution CDF + + + diff --git a/doc/sf_and_dist/graphs/inverse_gamma_pdf.png b/doc/sf_and_dist/graphs/inverse_gamma_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2451ad4eb6e03aa9a70382d931d47267b83d31 GIT binary patch literal 34350 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

TEc`c&O7 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 q--DZG^?>)mb;umxg8Jaof8mN>2TL= + + + + + + + + + + + + + + + + + + + + + +0 +1 +2 +3 +4 +5 +0 + +0 +1 +2 +3 +4 +5 +0 + +Probability + +Random Variable + + + + + + + + + + + + + +α = 1, β = 1 +α = 2, β = 1 +α = 3, β = 2 +α = 3, β = 0.5 + +Inverse Gamma Distribution PDF + + + diff --git a/doc/sf_and_dist/html/index.html b/doc/sf_and_dist/html/index.html index 11dcb4526..017fce59c 100644 --- a/doc/sf_and_dist/html/index.html +++ b/doc/sf_and_dist/html/index.html @@ -49,11 +49,11 @@ Thijs van den Berg

-
+

- ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22

This manual is also available in printer - friendly PDF format. + friendly PDF format, and as a CD ISBN 0-9504833-2-X 978-0-9504833-2-0, + Classification 519.2-dc22.

- +

Last revised: August 23, 2010 at 10:23:09 GMT

Last revised: September 29, 2010 at 17:50:24 GMT


diff --git a/doc/sf_and_dist/html/math_toolkit/backgrounders.html b/doc/sf_and_dist/html/math_toolkit/backgrounders.html index bbd4dc469..5ca9a6507 100644 --- a/doc/sf_and_dist/html/math_toolkit/backgrounders.html +++ b/doc/sf_and_dist/html/math_toolkit/backgrounders.html @@ -38,9 +38,9 @@ -
- + Handling of Functions that are Not Mathematically defined

Functions that are not mathematically defined, like the Cauchy mean, fail - to compile by default. A - policy allows control of this. + to compile by default. A policy + allows control of this.

If the policy is to permit undefined functions, then calling them throws @@ -258,7 +258,7 @@

- + Median of distributions
@@ -268,11 +268,13 @@ functions, the mid-point in a list of values.

- However a useful median approximation for distribution dist - may be available from + However a useful numerical approximation for distribution dist + is available as usual as an accessor non-member function median using median(dist), + that may be evaluated (in the absence of an analytic formula) by calling

- quantile(dist, 0.5). + quantile(dist, 0.5) (this + is the mathematical definition of course).

Mean, @@ -291,7 +293,7 @@ Basic Statistics. give more detail, in particular for discrete distributions.

- + Handling of Floating-Point Infinity
@@ -335,7 +337,7 @@ handling policies.

- + Scale, Shape and Location
@@ -362,7 +364,7 @@ functions, they can be added if required.

- + Notes on Implementation of Specific Functions & Distributions
@@ -374,7 +376,7 @@ lower = -1, mode = 0 and upper = 1 would be more suitable.
- + Rational Approximations Used
@@ -417,7 +419,7 @@ to the "true" minimax solution.

- + Representation of Mathematical Constants
@@ -478,7 +480,7 @@ double p = boost::math::constants::pi(); // Context does not allow for disambiguation of overloaded function
- + Thread safety
@@ -503,7 +505,7 @@ the right thing here at some point.

- + Sources of Test Data
@@ -514,7 +516,10 @@ in the case of serious disagreement. The accuracy, actual and claimed, vary very widely. Only Wolfram Mathematica functions provided a higher accuracy than C++ double (64-bit floating-point) - and was regarded as the most-trusted source by far. + and was regarded as the most-trusted source by far. The The + R Project for Statistical Computing provided the widest range of + distributions, but the usual Intel X86 distribution uses 64-but doubles, + so our use was limited to the 15 to 17 decimal digit accuracy.

A useful index of sources is: Web-oriented @@ -541,10 +546,18 @@ the underlying special function is known to be difficult to implement.

- + Creating and Managing the Equations
+

+ Equations that fit on a single line can most easily be produced by inline + Quickbook code using templates for Unicode Greek and Unicode Math symbols. + All Greek letter and small set of Math symbols is available at /boost-path/libs/math/doc/sf_and_dist/html4_symbols.qbk +

+

+ Where equations need to use more than one line, real Math editors were used. +

The primary source for the equations is now MathML: see the *.mml files in libs/math/doc/sf_and_dist/equations/. @@ -555,7 +568,7 @@ mangles these files and should not currently be used.

- Convertion to SVG was achieved using SVGMath + Conversion to SVG was achieved using SVGMath and a command line such as:

$for file in *.mml; do
@@ -563,6 +576,11 @@
 >>$file > $(basename $file .mml).svg
 >done
 
+

+ See also the section on "Using Python to run Inkscape" and "Using + inkscape to convert scalable vector SVG files to Portable Network graphic + PNG". +

Note that SVGMath requires that the mml files are not wrapped in an XHTML XML wrapper - this is added by Mathcast by default - @@ -713,7 +731,7 @@ done HTML: this needs further investigation.

- + Producing Graphs
@@ -722,17 +740,19 @@ done same process as the equations.

- The programs /libs/math/doc/sf_and_dist/graphs/dist_graphs.cpp and /libs/math/doc/sf_and_dist/graphs/sf_graphs.cpp - generate the SVG's directly using the Google - Summer of Code 2007 project of Jacob Voytko (whose work so far is - at .\boost-sandbox\SOC\2007\visualization). + The programs /libs/math/doc/sf_and_dist/graphs/dist_graphs.cpp and + /libs/math/doc/sf_and_dist/graphs/sf_graphs.cpp generate + the SVG's directly using the Google + Summer of Code 2007 project of Jacob Voytko (whose work so far, considerably + enhanced and now reasonably mature and usable, by Paul A. Bristow, is at + .\boost-sandbox\SOC\2007\visualization).

-
- + Motivation

@@ -99,7 +99,7 @@ functions divided by large powers into single (simpler) expressions.

- + The Approximation
@@ -161,7 +161,7 @@

- + Computing the Coefficients
@@ -205,7 +205,7 @@ multiplied by F as the last step.

- + Choosing the Right Parameters
@@ -229,7 +229,7 @@ computing to float precision with double precision arithmetic.

-

Table 53. Optimal choices for N and g when computing with guard digits (source: +

Table 53. Optimal choices for N and g when computing with guard digits (source: Pugh)

@@ -372,7 +372,7 @@ exactly matches the machine epsilon for the type in question.

-

Table 54. Optimum value for N and g when computing at fixed precision

+

Table 54. Optimum value for N and g when computing at fixed precision

@@ -535,7 +535,7 @@ is exact, and so isn't used for the gamma function.

- + References
    @@ -560,9 +560,9 @@
-
- + General references
@@ -75,8 +75,8 @@ Wiley 2000.

- EXTREME VALUE - DISTRIBUTIONS, Theory and Applications Samuel Kotz & Saralees + Extreme Value + Distributions, Theory and Applications Samuel Kotz & Saralees Nadarajah, ISBN 978-1-86094-224-2 & 1-86094-224-5 Oct 2000, Chapter 1.2 discusses the various extreme value distributions.

@@ -91,7 +91,7 @@ Library (version 2), Walter E. Brown

- + Calculators* that we found (and used to cross-check - as far as their widely-varying accuracy allowed). @@ -101,7 +101,7 @@ Binomial Probability Distribution Calculator.

- + Other Libraries

@@ -133,7 +133,8 @@ http://www.softintegration.com/docs/packagechnagstat

- NAG libraries. + NAG + libraries.

MathCAD @@ -158,12 +159,36 @@ Statistics Glossary, Valerie Easton and John H. McColl.

+

+ _R R Development Core Team (2010). + R: A language and environment for statistical computing. R Foundation for + Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0, URL http://www.R-project.org. +

+

+ For use of R, see: +

+

+ Jim Albert, Bayesian Computation with R, ISBN 978-0-387-71384-7. +

+

+ C++ + Statistical Distributions in Boost - QuantNetwork forum discusses + using Boost.Math in finance. +

+

+ Quantnet + Boost and computational finance. Robert Demming & Daniel J. Duffy, + Introduction to the C++ Boost Libraries - Volume I - Foundations and Volume + II ISBN 978-94-91028-01-4, Advanced Libraries and Applications, ISBN 978-94-91028-02-1 + (to be published in 2011). discusses application of Boost.Math, especially + in finance.] +

-
-
- + Remez Step 1
@@ -205,7 +205,7 @@ to 5.6x10-4.

- + Remez Step 2
@@ -234,7 +234,7 @@ In our example we perform multi-point exchange.

- + Iteration

@@ -250,7 +250,7 @@ remez-4

- + Rational Approximations
@@ -299,7 +299,7 @@ number of terms overall.

- + Practical Considerations
@@ -388,7 +388,7 @@ 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 - ex over [-1,1], the initial interpolated form was some way from the minimax + ex ​ over [-1,1], the initial interpolated form was some way from the minimax solution:

@@ -397,7 +397,7 @@

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-3to 6x10-4: + the error from 1.3x10-3 ​to 6x10-4:

remez-5 @@ -407,7 +407,7 @@ desired minimax solution (5x10-4).

- + Remez Method Checklist
@@ -461,7 +461,7 @@
- + References

@@ -527,9 +527,9 @@ -
-
-
- + Finding the Location and Scale for Normal and similar distributions
@@ -50,7 +50,7 @@ using boost::math::complement; // Will be needed by users who want to use complements.
- + find_location function
@@ -80,7 +80,7 @@ }} // namespaces
- + find_scale function
@@ -130,9 +130,9 @@ -
-
- + References
    @@ -343,9 +343,9 @@
-
-
- + Estimating the Number of Trials Required for a Certain Number of Successes
@@ -431,7 +431,7 @@ of seeing 10 events that occur with frequency one half.

- + Estimating the Maximum Number of Trials to Ensure no more than a Certain Number of Successes @@ -479,7 +479,7 @@ Worked Example.

- + Non-member Accessors
@@ -504,7 +504,7 @@ in the context of this distribution:

-

Table 11. Meaning of the non-member accessors

+

Table 11. Meaning of the non-member accessors

@@ -620,7 +620,7 @@

quantile(complement(binomial(n, p), - P))` + P))

@@ -628,7 +628,7 @@

- + Examples

@@ -636,7 +636,7 @@ examples are available illustrating the use of the binomial distribution.

- + Accuracy

@@ -646,7 +646,7 @@ please refer to these functions for information on accuracy.

- + Implementation

@@ -890,7 +890,7 @@

- + References
    @@ -911,9 +911,9 @@
-
- + References
    @@ -400,9 +400,9 @@ independent, normally distributed random
-
- + references
    @@ -318,9 +318,9 @@
-
- @@ -281,7 +281,7 @@ @@ -318,7 +318,7 @@ @@ -363,9 +363,9 @@
-

- For shape parameter k and scale parameter θ it is + For shape parameter k and scale parameter θ ​ it is defined by the probability density function:

- Sometimes an alternative formulation is used: given parameters α= k and - β= 1 / θ, then the distribution can be defined by the PDF: + Sometimes an alternative formulation is used: given parameters α ​= k and + β ​= 1 / θ, then the distribution can be defined by the PDF:

@@ -137,7 +137,7 @@ than a dedicated Erlang Distribution.

- + Member Functions
@@ -162,7 +162,7 @@ Returns the scale parameter of this distribution.

- + Non-member Accessors
@@ -182,7 +182,7 @@ The domain of the random variable is [0,+∞].

- + Accuracy

@@ -194,12 +194,12 @@ refer to the accuracy data for those functions for more information.

- + Implementation

In the following table k is the shape parameter - of the distribution, θ is it's scale parameter, x + of the distribution, θ ​ is it's scale parameter, x is the random variate, p is the probability and q = 1-p.

@@ -268,7 +268,7 @@

- Using the relation: x = θ* gamma_p_inv(k, + Using the relation: x = θ ​* gamma_p_inv(k, p)

- Using the relation: x = θ* gamma_q_inv(k, + Using the relation: x = θ ​* gamma_q_inv(k, p)

- (k-1)θ for k>1 otherwise a domain_error + (k-1)θ ​ for k>1 otherwise a domain_error

-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/hypergeometric_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/hypergeometric_dist.html index 46003dcc5..cb4c77a88 100644 --- a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/hypergeometric_dist.html +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/hypergeometric_dist.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext
@@ -102,7 +102,7 @@

- + Member Functions
@@ -131,7 +131,7 @@ from the population N.

- + Non-member Accessors
@@ -185,7 +185,7 @@
- + Accuracy

@@ -211,7 +211,7 @@ meaningless for N >= 1015.

- + Testing

@@ -223,7 +223,7 @@ this implementation and NTL::RR.

- + Implementation

@@ -328,9 +328,9 @@ -


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/inverse_chi_squared_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/inverse_chi_squared_dist.html new file mode 100644 index 000000000..fae00b109 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/inverse_chi_squared_dist.html @@ -0,0 +1,471 @@ + + + +Inverse Chi Squared Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
#include <boost/math/distributions/inverse_chi_squared.hpp>
+

+

+
namespace boost{ namespace math{ 
+   
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class inverse_chi_squared_distribution
+{
+public:
+   typedef RealType value_type;
+   typedef Policy   policy_type;
+
+   inverse_chi_squared_distribution(RealType df = 1); // Not explicitly scaled, default 1/df.
+   inverse_chi_squared_distribution(RealType df, RealType scale = 1/df);  // Scaled.
+
+   RealType degrees_of_freedom()const; // Default 1.
+   RealType scale()const; // Optional scale [xi] (variance), default 1/degrees_of_freedom.
+};
+
+}} // namespace boost // namespace math
+
+

+ The inverse chi squared distribution is a continuous probability distribution + of the reciprocal of a variable distributed + according to the chi squared distribution. +

+

+ The sources below give confusingly different formulae using different + symbols for the distribution pdf, but they are all the same, or related + by a change of variable, or choice of scale. +

+

+ Two constructors are available to implement both the scaled and (implicitly) + unscaled versions. +

+

+ The main version has an explicit scale parameter which implements the + scaled + inverse chi_squared distribution. +

+

+ A second version has an implicit scale = 1/degrees of freedom and gives + the 1st definition in the Wikipedia + inverse chi_squared distribution. The 2nd Wikipedia inverse chi_squared + distribution definition can be implemented by explicitly specifying a + scale = 1. +

+

+ Both definitions are also available in Wolfram Mathematica and in The R Project for Statistical Computing + (geoR) with default scale = 1/degrees of freedom. +

+

+ See +

+
+

+ The inverse_chi_squared distribution is used in Bayesian + statistics: the scaled inverse chi-square is conjugate prior + for the normal distribution with known mean, model parameter σ² (variance). +

+

+ See conjugate + priors including a table of distributions and their priors. +

+

+ See also Inverse + Gamma Distribution and Chi + Squared Distribution. +

+

+ The inverse_chi_squared distribution is a psecial case of a inverse_gamma + distribution with ν (degrees_of_freedom) shape (α) and scale (β) where +

+

+   α= ν /2 and β = ½. +

+
+ + + + + +
[Note]Note
+

+ This distribution does provide the + typedef: +

+

+ +

+
typedef inverse_chi_squared_distribution<double> inverse_chi_squared;
+

+

+

+ If you want a double precision + inverse_chi_squared distribution you can use +

+

+ +

+
boost::math::inverse_chi_squared_distribution<>
+

+

+

+ or you can write inverse_chi_squared + my_invchisqr(2, 3); +

+
+

+ For degrees of freedom parameter ν and scale parameter ξ, it is defined + by the probability density function (PDF): +

+

+   f(x;ν, ξ) = 2 -ν/2 e(-1/2x x (-1-ν/2) / Γ(ν/2) +

+

+ and Cumulative Density Function (CDF) +

+

+   F(x;ν, ξ) = Γ( ν /2, νξ/2x) / Γ(ν /2) +

+

+ The following graphs illustrate how the PDF and CDF of the inverse chi_squared + distribution varies for a few values of parameters ν and ξ: +

+

+ +

+

+ +

+
+ + Member + Functions +
+
inverse_chi_squared_distribution(RealType df = 1); // Implicitly scaled 1/df.
+inverse_chi_squared_distribution(RealType df = 1, RealType scale); // Explicitly scaled.
+
+

+ Constructs an inverse chi_squared distribution with ν degrees of freedom + df, and scale scale with default + value 1/df. +

+

+ Requires that the degrees of freedom ν parameter is greater than zero, + otherwise calls domain_error. +

+
RealType degrees_of_freedom()const; 
+
+

+ Returns the degrees_of_freedom ν parameter of this distribution. +

+
RealType scale()const; 
+
+

+ Returns the scale ξ parameter of this distribution. +

+
+ + Non-member + Accessors +
+

+ All the usual non-member + accessor functions that are generic to all distributions are supported: + Cumulative Distribution Function, + Probability Density Function, Quantile, Hazard + Function, Cumulative Hazard Function, + mean, median, + mode, variance, + standard deviation, skewness, + kurtosis, kurtosis_excess, + range and support. +

+

+ The domain of the random variate is [0,+∞]. +

+
+ + + + + +
[Note]Note

+ Unlike some definitions, this implementation supports a random variate + equal to zero as a special case, returning zero for both pdf and cdf. +

+
+ + Accuracy +
+

+ The inverse gamma distribution is implemented in terms of the incomplete + gamma functions like the Inverse + Gamma Distribution that use gamma_p + and gamma_q + and their inverses gamma_p_inv + and gamma_q_inv: + refer to the accuracy data for those functions for more information. + But in general, gamma (and thus inverse gamma) results are often accurate + to a few epsilon, >14 decimal digits accuracy for 64-bit double. unless + iteration is involved, as for the estimation of degrees of freedom. +

+
+ + Implementation +
+

+ In the following table ν is the degrees of freedom parameter and ξ is the + scale parameter of the distribution, x is the random + variate, p is the probability and q = + 1-p its complement. Parameters α for shape and β for scale are + used for the inverse gamma function: α = ν/2 and β = ν * ξ/2. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = gamma_p_derivative(α, + β/ x, β) / x * x +

+
+

+ cdf +

+
+

+ Using the relation: p = gamma_q(α, + β / x) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = gamma_p(α, + β / x) +

+
+

+ quantile +

+
+

+ Using the relation: x = β ​/ gamma_q_inv(α, + p) +

+
+

+ quantile from the complement +

+
+

+ Using the relation: x = α ​/ gamma_p_inv(α, + q) +

+
+

+ mode +

+
+

+ ν * ξ / (ν + 2) +

+
+

+ median +

+
+

+ no closed form analytic equation is known, but is evaluated + as quantile(0.5) +

+
+

+ mean +

+
+

+ νξ / (ν - 2) for ν > 2, else a domain_error +

+
+

+ variance +

+
+

+ 2 ν² ξ² / ((ν -2)² (ν -4)) for ν >4, else a domain_error +

+
+

+ skewness +

+
+

+ 4 √2 √(ν-4) /(ν-6) for ν >6, else a domain_error +

+
+

+ kurtosis_excess +

+
+

+ 12 * (5ν - 22) / ((ν - 6) * (ν - 8)) for ν >8, else a domain_error +

+
+

+ kurtosis +

+
+

+ 3 + 12 * (5ν - 22) / ((ν - 6) * (ν-8)) for ν >8, else a domain_error +

+
+
+ + References +
+
    +
  1. + Bayesian Data Analysis, Andrew Gelman, John B. Carlin, Hal S. Stern, + Donald B. Rubin, ISBN-13: 978-1584883883, Chapman & Hall; 2 edition + (29 July 2003). +
  2. +
  3. + Bayesian Computation with R, Jim Albert, ISBN-13: 978-0387922973, + Springer; 2nd ed. edition (10 Jun 2009) +
  4. +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/inverse_gamma_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/inverse_gamma_dist.html new file mode 100644 index 000000000..376b916f3 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/inverse_gamma_dist.html @@ -0,0 +1,382 @@ + + + +Inverse Gamma Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
#include <boost/math/distributions/inverse_gamma.hpp>
+

+

+
namespace boost{ namespace math{ 
+   
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class inverse_gamma_distribution
+{
+public:
+   typedef RealType value_type;
+   typedef Policy   policy_type;
+
+   inverse_gamma_distribution(RealType shape, RealType scale = 1)
+
+   RealType shape()const;
+   RealType scale()const;
+};
+
+}} // namespaces
+
+

+ The inverse_gamma distribution is a continuous probability distribution + of the reciprocal of a variable distributed according to the gamma distribution. +

+

+ The inverse_gamma distribution is used in Bayesian statistics. +

+

+ See inverse + gamma distribution. +

+

+ R + inverse gamma distribution functions. +

+

+ Wolfram + inverse gamma distribution. +

+

+ See also Gamma + Distribution. +

+
+ + + + + +
[Note]Note
+

+ In spite of potential confusion with the inverse gamma function, this + distribution does provide the typedef: +

+

+ +

+
typedef inverse_gamma_distribution<double> gamma;
+

+

+

+ If you want a double precision + gamma distribution you can use +

+

+ +

+
boost::math::inverse_gamma_distribution<>
+

+

+

+ or you can write inverse_gamma + my_ig(2, 3); +

+
+

+ For shape parameter α and scale parameter β, it is defined by the probability + density function (PDF): +

+

+   f(x;α, β) = βα * (1/x) α+1 exp(-β/x) / Γ(α) +

+

+ and cumulative density function (CDF) +

+

+   F(x;α, β) = Γ(α, β/x) / Γ(α) +

+

+ The following graphs illustrate how the PDF and CDF of the inverse gamma + distribution varies as the parameters vary: +

+

+ +

+

+ +

+
+ + Member + Functions +
+
inverse_gamma_distribution(RealType shape = 1, RealType scale = 1);
+
+

+ Constructs an inverse gamma distribution with shape α and scale β. +

+

+ Requires that the shape and scale parameters are greater than zero, otherwise + calls domain_error. +

+
RealType shape()const;
+
+

+ Returns the α shape parameter of this inverse gamma distribution. +

+
RealType scale()const;
+
+

+ Returns the β scale parameter of this inverse gamma distribution. +

+
+ + Non-member + Accessors +
+

+ All the usual non-member + accessor functions that are generic to all distributions are supported: + Cumulative Distribution Function, + Probability Density Function, Quantile, Hazard + Function, Cumulative Hazard Function, + mean, median, + mode, variance, + standard deviation, skewness, + kurtosis, kurtosis_excess, + range and support. +

+

+ The domain of the random variate is [0,+∞]. +

+
+ + + + + +
[Note]Note

+ Unlike some definitions, this implementation supports a random variate + equal to zero as a special case, returning zero for pdf and cdf. +

+
+ + Accuracy +
+

+ The inverse gamma distribution is implemented in terms of the incomplete + gamma functions gamma_p + and gamma_q + and their inverses gamma_p_inv + and gamma_q_inv: + refer to the accuracy data for those functions for more information. + But in general, inverse_gamma results are accurate to a few epsilon, + >14 decimal digits accuracy for 64-bit double. +

+
+ + Implementation +
+

+ In the following table α is the shape parameter of the distribution, α ​ is + its scale parameter, x is the random variate, p + is the probability and q = 1-p. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = gamma_p_derivative(α, + β/ x, β) / x * x +

+
+

+ cdf +

+
+

+ Using the relation: p = gamma_q(α, + β / x) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = gamma_p(α, + β / x) +

+
+

+ quantile +

+
+

+ Using the relation: x = β ​/ gamma_q_inv(α, + p) +

+
+

+ quantile from the complement +

+
+

+ Using the relation: x = α ​/ gamma_p_inv(α, + q) +

+
+

+ mode +

+
+

+ β / (α + 1) +

+
+

+ median +

+
+

+ no analytic equation is known, but is evaluated as quantile(0.5) +

+
+

+ mean +

+
+

+ β / (α - 1) for α > 1, else a domain_error +

+
+

+ variance +

+
+

+ (β * β) / ((α - 1) * (α - 1) * (α - 2)) for α >2, else a domain_error +

+
+

+ skewness +

+
+

+ 4 * sqrt (α -2) / (α -3) for α >3, else a domain_error +

+
+

+ kurtosis_excess +

+
+

+ (30 * α - 66) / ((α-3)*(α - 4)) for α >4, else a domain_error +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/laplace_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/laplace_dist.html index 585674774..d4bf55608 100644 --- a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/laplace_dist.html +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/laplace_dist.html @@ -62,7 +62,7 @@ 1972, p. 930). It is also called the double exponential distribution.

- For location parameter μ and scale parameter σ it is defined by the probability + For location parameter μ ​ and scale parameter σ ​ it is defined by the probability density function:

@@ -73,7 +73,7 @@ deviation of the normal or Gaussian distribution.

- The following graph illustrates the effect of the parameters μ and σ on the + The following graph illustrates the effect of the parameters μ ​ and σ ​ on the PDF. Note that the range of the random variable remains [-∞,+∞] irrespective of the value of the location parameter:

@@ -81,7 +81,7 @@

- + Member Functions
@@ -113,7 +113,7 @@ Returns the scale parameter of this distribution.

- + Non-member Accessors
@@ -133,7 +133,7 @@ The domain of the random variable is [-∞,+∞].

- + Accuracy

@@ -141,7 +141,7 @@ log and exp functions and as such should have very small errors.

- + Implementation

@@ -329,7 +329,7 @@

- + References
    @@ -350,9 +350,9 @@
-